Redis配置中的maxmemory-policy是什么
导读:Redis 配置项 maxmemory-policy 说明 概念与作用 maxmemory-policy 用于定义在 Redis 使用的内存达到上限(由 maxmemory 指定)时,如何选择并删除键以释放空间。达到上限后,不同策略会对新...
Redis 配置项 maxmemory-policy 说明
概念与作用
- maxmemory-policy 用于定义在 Redis 使用的内存达到上限(由 maxmemory 指定)时,如何选择并删除键以释放空间。达到上限后,不同策略会对新写入操作产生不同影响:有的会触发淘汰,有的会直接拒绝写入。读取操作通常不受影响。该配置既可在 redis.conf 中静态设置,也可通过 CONFIG SET 动态修改。
可选取值与行为
- noeviction:不淘汰任何键;当内存不足时,除少数命令(如 DEL)外,新的写入命令返回错误。适合必须保证数据不被删除的场景。
- allkeys-lru:对所有键使用近似 LRU(最近最少使用)算法淘汰,优先移除最久未使用的键。适合通用缓存场景。
- volatile-lru:仅从设置了 TTL 的键中,使用近似 LRU 淘汰。
- allkeys-random:对所有键随机淘汰。
- volatile-random:仅从设置了 TTL 的键中随机淘汰。
- volatile-ttl:仅从设置了 TTL 的键中淘汰 剩余生存时间最短 的键。
- allkeys-lfu:对所有键使用近似 LFU(最不经常使用)算法淘汰(Redis 4.0+ 支持)。
- volatile-lfu:仅从设置了 TTL 的键中,使用近似 LFU 淘汰(Redis 4.0+ 支持)。
如何选择
- 作为通用缓存、希望自动淘汰旧数据:优先选择 allkeys-lru(热点数据保留,冷数据被淘汰)。
- 键普遍设置了过期时间,且希望优先清理即将过期或较少访问的数据:选择 volatile-ttl 或 volatile-lru/volatile-lfu。
- 数据不可丢失、宁可拒绝写入也不淘汰:选择 noeviction(需配合监控与扩容)。
配置方法与注意事项
- 设置最大内存与策略(示例):
- 配置文件:
maxmemory 3G maxmemory-policy allkeys-lru - 运行时动态修改:
CONFIG SET maxmemory 3G CONFIG SET maxmemory-policy allkeys-lru
- 配置文件:
- 重要说明:
- 使用 volatile-* 策略时,若没有键设置了 TTL,这些策略将难以淘汰键,行为可能接近 noeviction(写入被拒绝)。
- LRU/LFU 在 Redis 中为近似算法,可通过 maxmemory-samples 调整采样数(默认 5;采样越多越接近真实 LRU,但 CPU 开销更高)。
- 达到上限后,通常只有写入操作受影响,读取仍可正常进行。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Redis配置中的maxmemory-policy是什么
本文地址: https://pptw.com/jishu/762458.html
