redis下key的过时时间详解

memcached 和 redis 的set命令都有expire参数,能够设置key的过时时间。可是redis是一个能够对数据持久化的key-value database,它的key过时策略仍是和memcached有所不一样的。梳理,整理以下: redis

 

redis经过expire命令来设置key的过时时间。 memcached

语法:redis.expire(key, expiration) 测试

 

1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和以后的版本里,能够屡次对key使用expire命令,更新key的expire time。 spa


2. redis术语里面,把设置了expire time的key 叫作:volatile keys。 意思就是不稳定的key。 get

 

3. 若是对key使用set或del命令,那么也会移除expire time。尤为是set命令,这个在编写程序的时候须要注意一下。 io


4. redis2.1.3以前的老版本里,若是对volatile keys 作相关写入操做(LPUSH,LSET),和其余一些触发修改value的操做时,redis会删除 该key。 也就是说 : 语法

redis.expire(key,expiration); 程序

redis.lpush(key,field,value); im

redis.get(key) //return null 数据

redis2.1.3以后的版本里面没有这个约束,能够任意修改。

 

redis.set(key,100);

redis.expire(key,expiration);

redis.incr(key)

redis.get(key)

//redis2.2.2 return 101; redis<2.1.3 return 1;

5. redis对过时键采用了lazy expiration:在访问key的时候断定key是否过时,若是过时,则进行过时处理。其次,每秒对volatile keys 进行抽样测试,若是有过时键,那么对全部过时key进行处理。

相关文章
相关标签/搜索