JAVA Redis StringRedisTemplate 修改值但是不修改过期时间

首先使用StringRedisTemplate存入一个String,带有过期时间:

int expires_in=3600;
stringRedisTemplate.opsForValue().set("test","hello",expires_in, TimeUnit.SECONDS);

接下来,修改值但是不修改过期时间:

stringRedisTemplate.opsForValue().set("test","hello",0);

这里的0,相当于一个偏移量,0:不偏移。

注意,这种情况 修改的值,长度不能比原值长度小。 感谢 九尾小妖狐灬 指出。

setRange ,在范围内替换,从索引1位置开始去一个个替换,所以当第二次修改的值长度小的时候,不能完全替换原值的所有位置字符。导致出现问题。

针对这种要修改的值长度比原来小的情况,暂且做出一种补救方法,会存在一定的误差,不过不大:

stringRedisTemplate.opsForValue().set("test","hi",stringRedisTemplate.getExpire("test", TimeUnit.SECONDS),TimeUnit.SECONDS);
经验分享 程序员 微信小程序 职场和发展