内存淘汰策略

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