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进行处理。