方法定义如下。
1、字符串密钥(stringkey,String value ) 2、字符串密钥(String value,String nxxx ) 3、字符串密钥(stringkey,sset ) inttime(4、stringset(stringkey、String value、String nxxx、String expx、long time ) )的功能完全相同,为“setthestringvalue”
1、将key、value set放入redis中,进行隐式覆盖。 默认ttl为-1(不会过期)。
2、根据第三个参数将key,value set放入redis
nx : not exists,仅在key不存在时将key value set发送到redis
xx : is exists,key存在的只有yes,将key value set发送到redis
3、4和2相同,但追加了有效期限
expx参数有两个值。
ex : seconds秒
px :毫秒
使用其他值抛出异常。 redis.clients.jedis.exceptions.jedisdataexception 3360 err syntax error
第五个参数很尴尬。 有两个选项值。 int和long的时间是有效期限。 有什么不同呢?
在Jedis类的set方法中,用于重载int和long(5 (第五个参数)的方法与方法主体基本相同。
公共字符串集(final string key,final String value,final String nxxx,final String expx,final int time ) checkisinmultiorpipipipe }公共字符串集(final string key,final String value,final String nxxx,final String expx,final long time ) checkisinmultioriorion }有什么不同呢? 没有别的了。 用源代码追上去:
Jedis类---客户端类--- binary客户端也一样
在BinaryClient的set方法中,为int和long的time参数创建并操作tobytearray(time ),然后打开源代码,您看到:
publicstaticfinalbyte [ ] to bytearray (final intvalue ) returnsafeencoder.encode (string value of ) value ); } publicstaticfinalbyte [ ] to bytearray (finallongvalue ) returnsafeencoder.encode (string value of ) value ); 因为int和long都转换为字符串,所以jedis的最后两种重载方法实际上是相同的。 (推测: 1、如果expx参数为px,则使用长整型参数可以表示更多的时间。 2、满足使用习惯的long类型表示毫秒)
最后,返回值String。 如果写入成功,则返回“OK”;如果写入失败,则返回空(即使是nxxx )。