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進行處理。