在Redis中,如果設(shè)置的maxmemory,那就要配置key的回收機(jī)制參數(shù)maxmemory-policy,默認(rèn)volatile-lru,參閱Redis作者的原博客:antirez weblog >> Redis as an LRU cache
原文中寫(xiě)得很清楚:
復(fù)制代碼 代碼如下:
Another way to use Redis as a cache is the maxmemory directive, a feature that allows specifying a maximum amount of memory to use. When new data is added to the server, and the memory limit was already reached, the server will remove some old data deleting a volatile key, that is, a key with an EXPIRE (a timeout) set, even if the key is still far from expiring automatically.
在Redis服務(wù)器占用內(nèi)存達(dá)到maxmemory的情況下,當(dāng)再想增加內(nèi)存占用時(shí),會(huì)按maxmemory-policy機(jī)制將老的數(shù)據(jù)刪除。這里簡(jiǎn)單說(shuō)一下volatile-lru,Redis會(huì)按LRU算法刪除設(shè)置了過(guò)期時(shí)間但還沒(méi)有過(guò)期的key,而對(duì)于沒(méi)有設(shè)置過(guò)期時(shí)間的key,Redis是永遠(yuǎn)保留的。當(dāng)然,如果你不想刪除沒(méi)有過(guò)期的key,那可以使用noeviction機(jī)制
復(fù)制代碼 代碼如下:
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
# is reached? You can select among five behavior:
#
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
您可能感興趣的文章:- 如何高效使用Redis作為L(zhǎng)RU緩存
- Redis中LRU淘汰策略的深入分析
- Redis緩存常用4種策略原理詳解
- 手動(dòng)實(shí)現(xiàn)Redis的LRU緩存機(jī)制示例詳解