redis經常被用來作為快取資料庫,有很多資料都是臨時快取一下,可能用過之後很久都不會再用到了,如果不進行處理,那麼快取資料堆積會導致記憶體洩漏,然後系統奔潰。
setex(string key, int seconds, string value) \\字串獨有的方式
expire key seconds //將key的生存時間設定為ttl秒
pexpire key milliseconds //將key的生成時間設定為ttl毫秒
expireat key timestamp //將key的過期時間設定為timestamp所代表的的秒數的時間戳
pexpireat key milliseconds-timestamp //將key的過期時間設定為timestamp所代表的的毫秒數的時間戳
乙個整數值1或0,如下:
該命令可以檢視過期時間還剩下多少。
在設定key的過期時間的同時,為該key建立乙個定時器,讓定時器在key的過期時間來臨時,對key進行刪除。
key過期的時候不刪除,每次從資料庫獲取key的時候去檢查是否過期,若過期,則刪除,返回null。
每隔一段時間執行一次刪除(在redis.conf配置檔案設定hz,1s重新整理的頻率)過期key操作。
惰性刪除+定期刪除
通過設定 maxmemory 限制最大使用記憶體。超出限制時,根據redis提供的幾種記憶體淘汰機制可以讓使用者自己決定如何騰出新空間以提供正常的讀寫服務。
機制說明
noeviction
拒絕寫操作, 讀、刪除可以正常使用。預設策略,不建議使用
allkeys-lru
移除最近最少使用的key,最常用的策略
allkeys-random
隨機刪除某個key,不建議使用
volatile-lru
在設定了過期時間的key中,移除最近最少使用的key,不建議使用
volatile-random
在設定了過期時間的key中,隨機刪除某個key,不建議使用
volatile-ttl
在設定了過期時間的key中,把最早要過期的key優先刪除
Redis 過期策略 和 淘汰策略
適用於 很多的 key 可能會到了過期時間還沒有進行刪除的情況。放任 key 過期不管,但是每次從鍵空間中獲取 key 時,都檢查取得的 key 是否過期,如果過期的話,就刪除該 key 如果沒有過期,就返回該 key 每隔一段時間程式就對資料庫進行一次檢查,刪除裡面的過期的 key 至於要刪除多少...
redis的過期淘汰策略
被動過期 只有當訪問乙個key時才判斷是否過期,過期就進行清除。節省cpu,但是浪費記憶體 定期過期 每隔一段時間進行掃瞄,清除過期的key 對記憶體和cpu都比較友好 可是如果key沒有新增過期時間,則redis中資料會越來越多,把redis佔滿,所以需要使用淘汰策略來清理掉一些資料,保證新插入的...
Redis之過期策略 資料淘汰機制
過期策略指的是ttl到期時的處理策略,淘汰策略指的是記憶體滿了的情況下的策略 redis可以對key設定過期時間,這是乙個非常實用的功能,那redis是如何實現這個機制的呢?答案就是 定期刪除 惰性刪除 結合定期刪除 惰性刪除redis 實現了key的過期時間機制,但還是會有一些key會沒有被定期刪...