Redis學習9 鍵過期

2021-06-28 13:21:55 字數 3335 閱讀 7455

鍵過期

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 刪除這 ...