jedis set 的四个重载方法

时间:2025-03-21 22:21:27

方法如下:

String    set(String key, String value)   //默认的ttl是-1(永不过期)
String    set(String key, String value, String nxxx) 
String    set(String key, String value, String nxxx, String expx, int time) 
String    set(String key, String value, String nxxx, String expx, long time)

1、第三个参数nxxx:

    nx : not exists, 只有key 不存在时才把key value set 到redis

    xx : is exists ,只有 key 存在是,才把key value set 到redis

2、expx参数有两个值可选 :

          ex : seconds 秒

          px :   milliseconds 毫秒

     使用其他值,抛出 异常 : : ERR syntax error 

3、4 和2 相同,方法4的过期范围取值更大

    第五个参数,有两种可选的值,int 和long 的time,都是过期时间,那有什么不一样呢?  

    Jedis 类的set 方法中 int和long(第五个参数)重载的方法,方法体基本一样:

public String set(final String key, final String value, final String nxxx, final String expx, final int time){
          checkIsInMultiOrPipeline();
          (key, value, nxxx, expx, time)
          return ();
     }


public String set(final String key, final String value, final String nxxx, final String expx, final long time){
          checkIsInMultiOrPipeline();
          (key, value, nxxx, expx, time)
          return ();
     }

Jedis 类 --》 Client类 --》 BinaryClient  都是一样的

在BinaryClient 的set 方法中,对 int 和 long 的time参数,做了个 toByteArray(time),操作,打开源码,发现:

public static final byte[] toByteArray(final int value){
    return (StringvalueOf(value));
}


public static final byte[] toByteArray(final long value){
    return (StringvalueOf(value));
}

 

4、返回值String,如果写入成功是“OK”,写入失败返回空(在nxxx的时候,也是)