鍵過期
redis提供兩個命令來設定鍵的生存時間(ttl,time to live) 包含以下
expire key seconds 將鍵key的生存時間設定為秒數
pexpire milliseconds 將鍵key的生存時間設定為毫秒數
如果過鍵不存在返回0,返回1表示設定成功
設定完成即開始,當鍵的生存時間被減少至低於0是,redis將刪除該鍵值對
expire示例:
127.0.0.1:6379> exists msg
0127.0.0.1:6379> set msg "hello world"
ok127.0.0.1:6379> expire msg 10
1127.0.0.1:6379> exists msg
1127.0.0.1:6379> exists msg0
127.0.0.1:6379> exists msg1
pexpire示例:
127.0.0.1:6379> pexpire msg 10500
1127.0.0.1:6379> exists msg
1127.0.0.1:6379> exists msg0
設定過期時間
expireat key timestamp 將鍵key的過期時間設定為指定的秒級unix時間戳
pexpireat key milliseconds-timestamp 將鍵key的過期時間設定為指定的毫秒級unix時間戳
如果給定的key不存在expireat和pexpireat設定不成功返回0,如果存在返回1則成功
鍵過期時間小於當前時間時將會被刪除。
生存時間和過期時間的取表
expire和pexpire的作用是讓鍵在n秒或n毫秒後被刪除
expireat和pexpireat的作用是指定unix時間到達之後刪除鍵
生存時間的鍵就像是個倒計時器,會倒數5,4,3,2,1,0 然後刪除
過期時間的鍵則是像定時器,他會在指定時間來臨後被刪除
返回鍵的剩餘生存時間
ttl key 以秒為單位返回鍵的剩餘生存時間
pttl key 以毫秒為單位返回鍵的剩餘生存時間
返回值-2 表示鍵不存在
-1 表示鍵存在,但沒有設定過期時間或者生存時間
>=0 鍵的剩餘生存時間
示例:127.0.0.1:6379> set msg "hello"
ok127.0.0.1:6379> expire msg 10086
1127.0.0.1:6379> ttl msg
10082
127.0.0.1:6379> pttl msg
10053370
127.0.0.1:6379> set number 100086
ok127.0.0.1:6379> expireat number 1800000000
1127.0.0.1:6379> ttl number
376887882
127.0.0.1:6379> pttl number
376887875726
移除鍵的過期時間或者生命時間
persist key
移除為鍵設定的過期時間或者生存時間,使得他不會被redis到期後刪除
127.0.0.1:6379> pttl number
376887875726
127.0.0.1:6379> persist msg
1127.0.0.1:6379> ttl msg
-1127.0.0.1:6379> persist number
1127.0.0.1:6379> ttl number
-1
示例:自動更新快取
setex命令、psetex命令
因為set key value expire key seconds這個經常出現,所以redis在2.0版本後新增了setex命令來代替
setex key seconds value
在redis2.6.0新增psetex key milliseconds value 代替 set key value pexpire key milliseconds
set命令對生存時間的支援
redis在2.6.12版本後,對set命令進行了修改
set key value [ex seconds][px milliseconds]
127.0.0.1:6379> set msg 10086 ex 5
ok127.0.0.1:6379> exists msg
0127.0.0.1:6379> set msg 10086 px 10000
ok127.0.0.1:6379> exists msg
0示例:自動重新整理的排行榜
複習:
Redis 鍵過期處理策略
redis可以給乙個key設定過期時間,當key過期以後,並不會馬上自動釋放。redis對於過期鍵的處理,分為被動刪除和主動刪除兩種方式。1.被動刪除 當客戶端訪問到乙個已經過期的鍵但尚未刪除,redis就會主動把它刪除。2.主動刪除 redis每秒會迴圈10次以下操作 隨機抽取20個具有過期時間的...
Redis 過期鍵刪除策略
當redis伺服器中的資料庫鍵超過過期時間,刪除策略主要為三種 惰性刪除 放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,過期的話,刪除該鍵 如果沒有過期,就返回該鍵。定期刪除 每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面的過期鍵。至於要刪除多少過期鍵,以及要檢查多少個資料...
redis過期鍵刪除策略
redis伺服器實際使用的過期鍵刪除策略有兩種 通過配合使用這兩種刪除策略,伺服器可以很好地合理使用cpu時間和避免浪費記憶體空間之間取得平衡。redis 缺省會每秒進行十次過期掃瞄,過期掃瞄不會遍歷過期字典中所有的 key,而是採用了一種簡單的貪心策略。從過期字典中隨機 20 個 key 刪除這 ...