Redis 過期時間與記憶體管理

2021-10-05 23:23:02 字數 1284 閱讀 5168

當 redis 作為快取使用時(此時快取僅作為熱點資料提高服務的訪問效能),需要考慮記憶體的限制,以及如何隨著業務的增長,僅保留熱點資料。

redis 所有的資料結構都可以設定過期時間,時間到了,redis 會自動刪除相應的物件。

需要注意的:

127.0.0.1:6379>

set k1 aaa

ok127.0.0.1:6379> expire k1 600

(integer) 1

127.0.0.1:6379> ttl k1

(integer) 597

127.0.0.1:6379>

set k1 bbb

ok127.0.0.1:6379> ttl k1

(integer) -1...

redis keys過期有兩種方式:被動和主動方式。

當一些客戶端嘗試訪問它時,key會被發現並主動的過期。

當然,這樣是不夠的,因為有些過期的keys,永遠不會訪問他們。

無論如何,這些keys應該過期,所以定時隨機測試設定keys的過期時間。所有這些過期的keys將會從金鑰空間刪除。

具體就是redis每秒10次做的事情:

並且我們不斷重複過期檢測,直到過期的keys的百分百低於25%,這意味著,在任何給定的時刻,最多會清除1/4的過期keys。

redis.conf或 使用config命令配置 redis的配置項:

maxmemory 100mb

maxmemory-policy [策略]

淘汰策略:

對最近很少使用(所有或有過期時間的)的key優先淘汰

對使用頻率最少(所有或有過期時間的)的key優先淘汰

redis的lru演算法並非完整的實現。這意味著redis並沒辦法選擇最佳候選來進行**,也就是最久未被訪問的鍵。

相反它會嘗試執行乙個近似lru的演算法,通過對少量keys進行取樣,然後**其中乙個最好的key(被訪問時間較早的)。

redis lru有個很重要的點,你通過調整每次**時檢查的取樣數量,以實現調整演算法的精度。這個引數可以通過以下的配置指令調整:

maxmemory-samples 5
@svenaugustus (

redis過期時間

在redis中,可以給乙個鍵設定過期時間,等時間到了以後,該鍵會被自動刪除。這個機制經常被用來儲存驗證碼等有一定時效性的東西,資料的有效期過了以後,就會被自動刪除以節省記憶體空間。跟過期相關的命令有三個,分別是expire persist和ttl,用法如下 來看個簡單的例子 0.1 6379 set...

redis過期時間

如果redis中沒有設定expire過期時間,那麼redis中的資料將會是永久有效的,不會被自動刪除 在不超過最大記憶體的情況下 但是redis無論有沒有設定expire,他都會遵循redis的配置好的刪除機制,在配置檔案裡設定 redis最大記憶體不足 時,資料清除策略,預設為 volatile ...

Redis記憶體管理 鍵過期策略 記憶體淘汰策略

記憶體使用統計指標 可以參考文章 其中需要重點關注的指標 used memory redis使用的記憶體總量 used memory rss 系統分配的記憶體總量 mem fragmentation ratio 記憶體碎片率 used memory rss used memory 當 mem fra...