Redis之最大記憶體置換策略

2022-03-01 21:29:20 字數 792 閱讀 9655

redis預設最大記憶體大小是應用程式可訪問的記憶體大小, 32位windows下是2gb, linux下是3gb. 64位下可以訪問的記憶體為2^64位元組, redis提供了maxmemory欄位來限制使用的最大記憶體. 既然提供了最大記憶體限制, 那麼當我們程式達到最大值時, redis使用了多種策略進行置換.redis建議最大記憶體設定為物理記憶體的一半。

volatile-lru : 對具有生存週期的key進行lru演算法置換.

volatile-random : 對具有生存週期的key進行隨機置換.

volatile-ttl : 對具有生存週期的key隨機進行抽樣, 置換出抽樣中生存週期最短的.

allkeys-lru : 對整個db進行lru演算法置換

allkeys-random : 對整個db進行隨機置換

noeviction : 不進行置換

volatile-random和allkeys-random策略, redis直接在相應的資料集上隨機並置換.

volatile-ttl需要抽樣, 抽樣的大小由maxmemory-samples控制, 預設maxmemory-samples為5, 抽樣越大演算法精確度越高,但是消耗也越大.

volatile-lru和allkeys-lru是對抽樣的資料中選出最近最久未使用的key置換出去.這裡抽樣的大小預設是16, 如果我們設定maxmemory-samples並且大於16的話, 抽樣值和最大的保持一致.redis設定了乙個可置換池, 大小為16, 每次先進行抽樣, 抽樣之後與置換池中的資料進行比較, 選出最近最久未使用的16個key放入置換池中, 從置換池中再選擇乙個key進行置換.

Redis最大記憶體淘汰策略

redis記憶體超出物理記憶體的限制的時候,會產生記憶體對換 swap 現象,與高速的redis思想相違背。因此生產環境中,不允許redis有記憶體交換行為,redis提供了配置引數maxmemory限制記憶體。實際記憶體超出maxmemory的時候,redis提供了幾種可選淘汰策略。不會繼續服務寫...

redis設定最大記憶體,及淘汰策略

redis設定最大記憶體,及淘汰策略 命令info查詢redis的記憶體及淘汰策略 used memory 由 redis 分配器分配的記憶體總量,包含了redis程序內部的開銷和資料占用的記憶體,以位元組 byte 為單位 used memory human 以更直觀的可讀格式顯示返回使用的記憶體...

關於redis 超過最大記憶體限制,觸發淘汰策略說明

記憶體清理策略 volatile lru 對所有設定了過期時間的key使用lru演算法進行刪除 allkeys lru 對所有key使用lru演算法進行刪除 volatile lfu 對所有設定了過期時間的key使用lfu演算法進行刪除 allkeys lfu 對所有key使用lfu演算法進行刪除 ...