前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【redis】Jedis 操作 Redis 基础指令(上)

【redis】Jedis 操作 Redis 基础指令(上)

作者头像
椰椰椰耶
发布2025-03-18 12:47:55
发布2025-03-18 12:47:55
5700
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

jedis 进行 redis 中的一些通用命令

  1. get/set
  2. exists
  3. del
  4. keys
  5. expire/ttl
  6. kype 接下来介绍这些 redis 的命令在代码中的曹组哦,不会覆盖到所有的命令

一个优秀的库,一定是非常容易上手的

基础操作

get/set

代码语言:javascript
代码运行次数:0
运行
复制
import redis.clients.jedis.Jedis;  
import redis.clients.jedis.JedisPool;  
  
public class RedisDemo {  
  
  
    public static void test1(Jedis jedis) {  
        System.out.println("get 和 set 的使用");  
        // 先清空一下数据库,避免上一组测试的残留数据影响到下一次组测试结果  
        jedis.flushAll();  
  
        jedis.set("key1", "111");  
        jedis.set("key2", "222");  
  
        String value1 = jedis.get("key1");  
        String value2 = jedis.get("key2");  
        System.out.println("value1 = " + value1);  
        System.out.println("value2 = " + value2);  
    }  
  
    public static void main(String[] args) {  
        // 连接到 Redis 服务器上  
        JedisPool jedisPool = new JedisPool("localhost",6379);  
  
        // 从 Redis 连接池中取一个连接出来  
        // 连接用完之后要释放,此处的释放不一定是真的关闭 TCP 连接,而是将连接放回到池子里  
        // 因为是在 try 后面的()里面进行取连接的,执行结束后会自动关闭  
        try(Jedis jedis = jedisPool.getResource()) {  
            // Redis 的各种命令,就对应到 Jedis 对象的各种方法  
            test1(jedis);  
        }  
    }  
}
  • 运行结果
image.png
image.png
ex/xx/nx
代码语言:javascript
代码运行次数:0
运行
复制
params.ex(10);  
params.xx();  
jedis.set("key3","333", params);
  • exxxnx 等指令,含义和前面我们学习的指令意思一样。不过要调用这些指令的话,需要一个额外的参数来接收这些信息,然后传到 set 里面

del/exists

代码语言:javascript
代码运行次数:0
运行
复制
public static void test2(Jedis jedis) {  
    System.out.println("exists 和 del");  
    jedis.flushAll();  
  
    jedis.set("key1", "111");  
    jedis.set("key2", "222");  
  
    System.out.println("key1 = " + jedis.get("key1"));  
    System.out.println("key2 = " + jedis.get("key2"));  
    boolean result = jedis.exists("key1");  
    System.out.println("redult1 = " + result);  
  
    jedis.del("key2");  
    boolean result2 = jedis.exists("key2");  
    System.out.println("进行 del key2 操作");  
    System.out.println("result2 = " + result2);  
}
代码语言:javascript
代码运行次数:0
运行
复制
long result2 = jedis.del("key2");  
System.out.println("进行 del key2 操作");  
System.out.println("result2 = " + result2);
  • del 的时候,返回类型是 long,返回值是 1 代表删除成功,是 0 代表删除失败

keys

代码语言:javascript
代码运行次数:0
运行
复制
public static void test3(Jedis jedis) {  
    System.out.println("keys");  
    jedis.flushAll();  
  
    jedis.set("key1", "111");  
    jedis.set("key2", "222");  
    jedis.set("key3", "333");  
    jedis.set("key4", "444");  
  
    // redis 中的 key 不能重复,不在意顺序,所以用 set 表示  
    Set<String> keys = jedis.keys("*");  
    System.out.println(keys);  
}

// keys
// [key1, key2, key3, key4]

expire/ttl

代码语言:javascript
代码运行次数:0
运行
复制
public static void test4(Jedis jedis) {  
    System.out.println("expire 和 ttl");  
    jedis.flushAll();  
  
    jedis.set("key1", "111");  
    jedis.expire("key1", 10);  
  
    long time = jedis.ttl("key1");  
    System.out.println("time: " + time);  
}


// expire 和 ttl
// time: 10
  • 这里由于执行速度太快,所以 ttl 一直都是 10s,我们可以让他休眠一下再执行
代码语言:javascript
代码运行次数:0
运行
复制
public static void test4(Jedis jedis) {  
    System.out.println("expire 和 ttl");  
    jedis.flushAll();  
  
    jedis.set("key1", "111");  
    jedis.expire("key1", 10);  
  
    try {  
        Thread.sleep(4000);  
    } catch (InterruptedException e) {  
        throw new RuntimeException(e);  
    }  
  
    long time = jedis.ttl("key1");  
    System.out.println("time: " + time);  
}
  • 休眠 4s

type

代码语言:javascript
代码运行次数:0
运行
复制
public static void test5(Jedis jedis) {  
    System.out.println("type");  
    jedis.flushAll();  
    jedis.set("key", "111");  
    String type = jedis.type("key");  
    System.out.println("type: " + type);  
  
    // 有序集合 list(顺序很重要、可重复)  
    jedis.lpush("key2", "111", "222", "333");  
    type = jedis.type("key2");  
    System.out.println("type: " + type);  
  
    // hash,key-(filed1-value1)、(field2-value2)......  
    jedis.hset("key3", "f1", "111");  
    type = jedis.type("key3");  
    System.out.println("type: " + type);  
  
    // 无序集合 set(顺序不重要、不可重复)  
    jedis.sadd("key4","111", "222", "333");  
    type = jedis.type("key4");  
    System.out.println("type: " + type);  
  
    // 升/降序集合(按照参数 score 来排序)  
    jedis.zadd("key5", 10, "zhangsan");  
    type = jedis.type("key5");  
    System.out.println("type: " + type);  
}

type
type: string
type: list
type: hash
type: set
type: zset

字符串操作

mget 和 mset

一次操作多组键值对

代码语言:javascript
代码运行次数:0
运行
复制
public static void test1(Jedis jedis) {  
    jedis.mset("key1", "value1","key2", "value2", "key3", "value3");  
    List<String> mget = jedis.mget("key1", "key2", "key3");  
    System.out.println(mget);  
}
  • 输出:[value 1, value 2, value 3]

append

如果 key 已经存在,并且是一个 string,命令会将 value 追加到原有 string 的后面。如果 key 不存在,则效果等同于 `set

代码语言:javascript
代码运行次数:0
运行
复制
public static void test2(Jedis jedis) {  
    jedis.flushAll();  
  
    jedis.append("key", "aaa");  
    String value = jedis.get("key");  
    System.out.println(value);  
  
    jedis.append("key", "bbb");  
    value = jedis.get("key");  
    System.out.println(value);  
}

// 输出结果:
aaa
aaabbb

getrange 和 setrange

  • getrange:返回 key 对应的 string 的⼦串,由 startend 确定(左闭右闭)。
    • Java 中的 `substring
  • setrange:从 start 开始替换,直到给的字符串替换完为止
代码语言:javascript
代码运行次数:0
运行
复制
public static void test3(Jedis jedis) {  
    jedis.flushAll();  
  
    jedis.set("key", "abcdefg");  
    String value = jedis.getrange("key", 1, 4);  
    System.out.println(value);  
  
    System.out.println(jedis.get("key"));  
    jedis.setrange("key", 0, "hhh");  
    value = jedis.get("key");  
    System.out.println(value);  
}

//运行结果:
bcde
abcdefg
hhhdefg

setnx

不存在才能设置,存在则设置失败

代码语言:javascript
代码运行次数:0
运行
复制
public static void test4(Jedis jedis) {  
    jedis.flushAll();  
  
    long n = jedis.setnx("key", "value");  
    System.out.println(n);  
    String value = jedis.get("key");  
    System.out.println(value);  
  
    n = jedis.setnx("key", "value2");  
    System.out.println(n);  
    value = jedis.get("key");  
    System.out.println(value);  
}


//运行结果
1
value
0
value
  • setnx 设置成功返回 1,失败返回 0

psetex

设置 key 的过期时间(单位 ms

  • psetex key 时间 value
代码语言:javascript
代码运行次数:0
运行
复制
public static void test5(Jedis jedis) {  
    jedis.flushAll();  
    jedis.psetex("key", 1000, "value");  
  
    try {  
        Thread.sleep(500);  
    } catch (InterruptedException e) {  
        throw new RuntimeException(e);  
    }  
      
    long ttl = jedis.pttl("key");  
    System.out.println(ttl);  
}

//运行结果
495
  • 通过 sleep 休眠一段时间,可以更好的看到过期时间的变化
  • 获取到的时间不一定刚好 1000-500,因为 pttl 本身也是有时间开销的

incr/decr 和 incrby/decrby

代码语言:javascript
代码运行次数:0
运行
复制
public static void test6(Jedis jedis) {  
    jedis.flushAll();  
    jedis.set("key", "0");  
    jedis.incr("key");  
    System.out.println(jedis.get("key"));  
  
    jedis.decr("key");  
    System.out.println(jedis.get("key"));  
  
    jedis.incrBy("key", 10);  
    System.out.println(jedis.get("key"));  
  
    jedis.decrBy("key", 5);  
    System.out.println(jedis.get("key"));  
}

//运行结果

1
0
10
5
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础操作
    • get/set
      • ex/xx/nx
    • del/exists
    • keys
    • expire/ttl
    • type
  • 字符串操作
    • mget 和 mset
    • append
    • getrange 和 setrange
    • setnx
    • psetex
    • incr/decr 和 incrby/decrby
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档