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

相關文章
相關標籤/搜索