天天看點

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);