首先使用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);