内存淘汰策略
3 分钟阅读
•
432 字
+
411 词
当Redis的运行内存已经超过Redis设置的最大内存后,会使用内存淘汰策略删除符合条件的key,以此来保障Redis高效的运行
这个最大内存,64位操作系统没有内存大小限制,32位是3G。
==noeviction==
(Redis3.0之后,
默认的内存淘汰策略
):它表示当运行内存
超过最大
设置内存时,
不淘汰任何数据
,这时如果有新的数据写入,会报错
通知禁止写入
,不淘汰任何数据,但是如果没用数据写入的话,只是单纯的查询或者删除操作的话,还是可以正常工作。
针对「进行数据淘汰」这一类策略,又可以细分为「
在设置了过期时间的数据中进行淘汰
」和「
在所有数据范围内进行淘汰
」这两类策略。
==在设置了过期时间的数据中进行淘汰==:
随机淘汰
:·
volatile-random
:随机淘汰设置了过期时间的
任意
键值
更早过期淘汰
·
volatile-ttl:
优先
淘汰更早过期
的键值。
LRU淘汰
·
volatile-lru
(Redis3.0 之前,默认的内存淘汰策略):淘汰所有设置了过期时间的键值中,
最久未使用
的键值;
LFU淘汰****volatile-lfu
(Redis 4.0 后新增的内存淘汰策略):淘汰所有设置了过期时间的键值中,
最少使用
的键值;
==
在所有数据范围内进行淘汰:
==
随机淘汰
:allkeys-random**:**随机淘汰任意键值;
LRU淘汰alkeys-lru
:淘汰整个键值中最久未使用的键值,
·
LFU淘汰allkeys-lfu
(Redis 4.0 后新增的内存淘汰策略):淘汰整个键值中最少使用的键值,
八种内存淘汰策略
1、
不进行数据淘汰
的策略
2.进行数据淘汰的策略