【Redis】 Java操作Redis客户端命令——基础操作与字符串操作

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis】 Java操作Redis客户端命令——基础操作与字符串操作

🍃前言

本篇文章重点是,介绍一些Java 操作 Redis 的常见命令的使用。

总体分为以下6个部分进行介绍:

  1. 基础操作
  2. 字符串操作
  3. 列表操作
  4. 哈希表操作
  5. 集合操作
  6. 有序集合操作

本篇演示以下两种用法:

  1. 基础操作
  2. 字符串操作

🎍基础操作

准备工作代码如下:

public class EssentialDemo {
    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
        try (Jedis jedis = jedisPool.getResource()){
            jedis.flushAll();
            // 在此处调用测试代码
            //testGetAndSet(jedis);
            //testExistsAndDel(jedis);
            //testKeys(jedis);
            //testExpireAndTtl(jedis);
            //testType(jedis);
        }
    }
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 常见的基本全局命令

🚩get 和 set

  • get:获取 key 所对应的 value,若当前key 不存在,则获取为null
  • set:设置当前 key 与 value

这两个命令本应该属于字符串操作,但是由于后面基本操作都离不开这两个操作,所以这里先行进行介绍一下。

public static void testGetAndSet(Jedis jedis) {
    System.out.println("测试 get 和 set");
    jedis.set("k1","111");
    jedis.set("k2","222");
    String result = jedis.get("k1");
    System.out.println("k1:" + result);
    result = jedis.get("k2");
    System.out.println("k2:" + result);
    result = jedis.get("k3");
    System.out.println("k3:" + result);
}

执行结果如下:

🚩exists 和 del

  • exists: 判断当前 key 是否存在
  • del: 删除当前key(可以为多个)可以,返回删除 key 的个数

代码示例如下:

public static void testExistsAndDel(Jedis jedis) {
    System.out.println("测试 exists 和 del");
    jedis.set("k1","111");
    jedis.set("k2","222");
    jedis.set("k3","333");
    boolean ret = jedis.exists("k1");
    System.out.println("k1 : " + ret);
    long n = jedis.del("k1");
    ret = jedis.exists("k1");
    System.out.println("n : " + n);
    System.out.println("k1 : " + ret);
    n = jedis.del("k2","k3");
    System.out.println("n : " + n);
    ret = jedis.exists("k2");
    System.out.println("k2 : " + ret);
    ret = jedis.exists("k3");
    System.out.println("k3 : " + ret);
}

执行情况如下:

🚩keys

  • keys:获取相应的key,可以使用通配符,返回一个集合

代码示例如下:

public static void testKeys(Jedis jedis) {
    System.out.println("测试 keys");
    jedis.set("k1","11");
    jedis.set("k2","22");
    jedis.set("k3","33");
    Set<String> arrayList = jedis.keys("*");
    System.out.println("* : " + arrayList);
}

执行结果如下:

🚩expire 和 ttl

  • expire:设置过期时间,使⽤ setex 直接设置 key 的同时指定过期时间. 单位为秒
  • ttl:显示剩余时间

代码示例如下:

public static void testExpireAndTtl(Jedis jedis)  {
    System.out.println("测试 expire 和 ttl");
    jedis.setex("key",2,"value");
    long ttl = 1;
    while (ttl > 0) {
        try {
            Thread.sleep(100);
            ttl = jedis.ttl("key");
            System.out.println("剩余:" + ttl);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

执行结果如下:

🚩type

  • type:显示当前key所对应value的类型

代码示例如下:

public static void testType(Jedis jedis) {
    jedis.set("key1", "value");
    System.out.println(jedis.type("key1"));
    jedis.lpush("key2", "a", "b", "c");
    System.out.println(jedis.type("key2"));
    jedis.hset("key3", "name", "zhangsan");
    System.out.println(jedis.type("key3"));
    jedis.sadd("key4", "111", "222", "333");
    System.out.println(jedis.type("key4"));
    jedis.zadd("key5", 1, "aaa");
    System.out.println(jedis.type("key5"));
}

执行结果如下:

🍀字符串操作

除去上面所介绍的 get 与 set ,还有以下操作。

首先准备工作代码如下:

public class StringDemo {
    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
            try (Jedis jedis = jedisPool.getResource()){
              jedis.flushAll();
              //在此处调用测试代码
              //testMsetAndMget(jedis);
              //testAppend(jedis);
              //testSetrangeAndGetrange(jedis);
              //testSetnx(jedis);
              //testIncrDecr(jedis);
              //testIncrbyDecrby(jedis);
        }
    }
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写【Redis】 String 字符串类型常见命令

🚩mset 和 mget

  • mset:设置多个key与value
  • mset:获取多个key的value,返回一个列表

代码示例如下:

public static void testMsetAndMget(Jedis jedis) {
    jedis.mset("k1","11","k2","22","k3","33");
    List<String> list = jedis.mget("k1","k2","k3","k4");
    System.out.println("list : " + list);
}

执行结果如下:

🚩append

  • append:对原字符串进行拼接

代码示例如下:

public static void  testAppend(Jedis jedis) {
    System.out.println("测试 append ");
    jedis.set("k1","abc");
    String result = jedis.get("k1");
    System.out.println("result : " + result);
    jedis.append("k1","def");
    result = jedis.get("k1");
    System.out.println("result : " + result);
}

执行结果如下:

🚩getrange 和 setrange

  • setrange:覆盖字符串的⼀部分,从指定的偏移开始。
  • getrange:返回 key 对应的 string 的⼦串(左闭右闭)。

代码示例如下:

public static void testSetrangeAndGetrange(Jedis jedis) {
    System.out.println("测试 setrange 和 getrange");
    jedis.set("key","abcdefg");
    String result = jedis.getrange("key",0,-1);
    System.out.println("result : " + result);
    result = jedis.getrange("key",1,4);
    System.out.println("result : " + result);
    jedis.setrange("key",0,"123");
    result = jedis.getrange("key",0,-1);
    System.out.println("result : " + result);
}

执行结果如下:

🚩setnx

  • setnx:设置 key-value 但只允许在 key 之前不存在的情况下。

代码示例如下:

public static void testSetnx(Jedis jedis) {
    System.out.println("测试 setnx");
    jedis.set("k1","11");
    long n = jedis.setnx("k1","11");
    System.out.println(n);
    n = jedis.setnx("k2","22");
    System.out.println(n);
    String result = jedis.get("k2");
    System.out.println(result);
}

代码执行结如下

🚩incr 和 decr

  • incr:将 key 对应的 string 表⽰的数字加⼀
  • decr:将 key 对应的 string 表⽰的数字减⼀

代码示例如下:

public static void testIncrDecr(Jedis jedis) {
    System.out.println("测试 incr 和 decr");
    jedis.set("k1","5");
    String result = jedis.get("k1");
    System.out.println("此时result : " + result);
    jedis.decr("k1");
    result = jedis.get("k1");
    System.out.println("result - 1 : " + result);
    System.out.println("此时result : " + result);
    jedis.incr("k1");
    result = jedis.get("k1");
    System.out.println("result + 1 : " + result);
}

执行结果如下:

🚩incrby 和 decrby

  • incrby:将 key 对应的 string 表⽰的数字加上对应的值。
  • decrby:将 key 对应的 string 表⽰的数字减去对应的值。

代码示例如下:

public static void testIncrbyDecrby(Jedis jedis) {
    System.out.println("测试 incr 和 decr");
    jedis.set("k1","5");
    String result = jedis.get("k1");
    System.out.println("此时result : " + result);
    jedis.decrBy("k1",5);
    result = jedis.get("k1");
    System.out.println("result - 5 : " + result);
    System.out.println("此时result : " + result);
    jedis.incrBy("k1",5);
    result = jedis.get("k1");
    System.out.println("result + 5 : " + result);
}

执行结果如下:

⭕总结

关于《【Redis】 Java操作Redis客户端命令——基础操作与字符串操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
22天前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
40 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
18小时前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
12 4
|
21天前
|
缓存 NoSQL Java
Java中redis面试题
Java中redis面试题
28 1
|
3天前
|
存储 NoSQL Java
Java 使用 Redis
10月更文挑战第22天
11 0
|
22天前
|
NoSQL Java API
Java操作redis
Java操作redis
|
NoSQL 测试技术 Redis
Redis命令性能优化及事务使用过程(下)
Redis命令性能优化及事务使用过程(下)
534 0
Redis命令性能优化及事务使用过程(下)
|
存储 移动开发 NoSQL
Redis命令性能优化及事务使用过程(上)
Redis命令性能优化及事务使用过程(上)
217 0
Redis命令性能优化及事务使用过程(上)
|
26天前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
60 1
|
NoSQL Redis C++
Redis命令——事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。
1013 0
|
NoSQL Java Redis
redis必杀命令:事务
题记: Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。
820 0