在 Redis 中,可以为给定key设置生存时间,当key过期时(生存时间为0),它会被自动删除。
在 Redis 中,带有生存时间的key被称为『易失的』(volatile)。
生存时间可以通过使用DEL命令来删除整个key来移除,或者被SET和GETSET命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的key的值而不是用一个新的key值来代替(replace)它的话,那么生存时间不会被改变。
比如说,对一个key执行INCR命令,对一个列表进行LPUSH命令,或者对一个哈希表执行HSET命令,这类操作都不会修改key本身的生存时间。
另一方面,如果使用RENAME对一个key进行改名,那么改名后的key的生存时间和改名前一样。
RENAME命令的另一种可能是,尝试将一个带生存时间的key改名成另一个带生存时间的another_key,这时旧的another_key(以及它的生存时间)会被删除,然后旧的key会改名为another_key,因此,新的another_key的生存时间也和原本的key一样。
使用PERSIST命令可以在不删除key的情况下,移除key的生存时间,让key重新成为一个『持久的』(persistent)key
在java的org.springframework.data.redis.core有接口ValueOperations
在保存时设置该条数据的生存时间
/**
* Set {@codevalue} for {@codekey}.
*
*@paramkeymust not be {@literalnull}.
*@paramvalue
*@seeRedis Documentation: SET
*/
void set(K key,V value);
/**
* Set the {@codevalue} and expiration {@codetimeout} for {@codekey}.
*
*@paramkeymust not be {@literalnull}.
*@paramvalue
*@paramtimeout
*@paramunitmust not be {@literalnull}.
*@seeRedis Documentation: SETEX
*/
void set(K key,V value, long timeout,TimeUnit unit);
/**
作者:谁在烽烟彼岸
链接:https://www.jianshu.com/p/7503200c68ad
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。