Redis的過期策略是如何實現的?草莓愛唱歌2019-10-18 05:13:53

memcached 和 redis 的set命令都有expire引數,可以設定key的過期時間。但是redis是一個可以對資料持久化的key-value database,它的key過期策略還是和memcached有所不同的。 redis透過expire命令來設定key的過期時間。語法:redis。expire(key, expiration) 1。 在小於2。1。3的redis版本里,只能對key設定一次expire。redis2。1。3和之後的版本里,可以多次對key使用expire命令,更新key的expire time。2。 redis術語裡面,把設定了expire time的key 叫做:volatile keys。 意思就是不穩定的key。 3。 如果對key使用set或del命令,那麼也會移除expire time。尤其是set命令,這個在編寫程式的時候需要注意一下。4。 redis2。1。3之前的老版本里,如果對volatile keys 做相關寫入操作(LPUSH,LSET),和其他一些觸發修改value的操作時,redis會刪除 該key。 也就是說 :redis。expire(key,expiration);redis。lpush(key,field,value);redis。get(key) //return nullredis2。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進行處理。

Redis的過期策略是如何實現的?