1. 程式人生 > >redis 下key的過期時間詳解 :expire

redis 下key的過期時間詳解 :expire

編寫 抽樣 通過 字符串 n) 開發包 有序集合 memcache jedis

Redis是一個開源的Key-Value數據緩存,和Memcached類似。

Redis多種類型的value,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。

Jedis 是 Redis 官方首選的 Java 客戶端開發包。

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

redis 下key的過期時間詳解 :expire