設定Redis使用LRU演算法

2021-08-16 18:08:57 字數 1005 閱讀 6837

127.0

.0.1:6379> config get maxmemory

1) "maxmemory"

2) "0"

127.0

.0.1:6379> config set maxmemory 100mb

ok127.0

.0.1:6379> config get maxmemory

1) "maxmemory"

2) "104857600"

maxmemory 100mb
allkeys-lru: 優先刪除掉最近最不經常使用的key,用以儲存新資料

volatile-lru: 只從設定失效(expire set)的key中選擇最近最不經常使用的key進行刪除,用以儲存新資料

allkeys-random: 隨機從all-keys中選擇一些key進行刪除,用以儲存新資料

volatile-random: 只從設定失效(expire set)的key中,選擇一些key進行刪除,用以儲存新資料

volatile-ttl: 只從設定失效(expire set)的key中,選出存活時間(ttl)最短的key進行刪除,用以儲存新資料

如果所有的key的訪問概率都是差不多的,那麼可以選用allkeys-random策略去置換資料

如果對資料有足夠的了解,能夠為key指定hint(通過expire/ttl指定),那麼可以選擇volatile-ttl進行置換

redis會檢查記憶體使用,如果記憶體使用超過maxmemory,就會按照置換策略刪除一些key

新的命令執行成功

maxmemory-samples

5

灰色的是沒有被置換出去的key

綠色的是新增加的key

設定Redis使用LRU演算法

lru least recently used 最近最少使用演算法是眾多置換演算法中的一種。redis中有乙個maxmemory概念,主要是為了將使用的記憶體限定在乙個固定的大小。redis用到的lru 演算法,是一種近似的lru演算法。上面已經說過maxmemory是為了限定redis最大記憶體使...

Redis高階 LRU演算法

首先,redis的過期策略分為定期刪除 惰性刪除。定期刪除 預設100ms隨機抽查一些過期的key將其刪除即可。惰性刪除 當查詢key時,if key 過期 刪除key且不返回 正常執行 為什麼不掃瞄全部的key?如果對所有的key進行掃瞄,那就相當於執行了一次全包掃瞄,效能是非常低的。noeviv...

使用Redis作為LRU快取

當 redis 作為快取使用時,當你新增新的資料時,有時候很方便使 redis 自動 老的資料。lru 實際上是被唯一支援的資料移除方法。redis 的 maxmemory 指令,用於限制記憶體使用到乙個固定的容量,也包含深入 redis 使用的 lru 演算法,乙個近似準確的 lru。maxmem...