上一篇
🔥 最新动态(2025-08)
Redis 7.4 近期发布了对内存淘汰策略的增强,新增了针对大Key的智能检测功能,当内存不足时能优先淘汰占用空间大的冷数据,进一步降低OOM风险!
Redis作为内存数据库,所有数据都放在内存中,但内存是有限的,当内存用满时,新写入的数据就会失败 ❌,这时就需要淘汰策略(Eviction Policy)来决定哪些旧数据该被清理,腾出空间给新数据。
❌ 不淘汰,内存满时直接报错。
👉 适合数据绝对不允许丢失的场景(但容易引发写入失败)。
🗑️ 从设置了过期时间的Key中,淘汰最近最少使用(LRU)的数据。
🔧 配置示例:
CONFIG SET maxmemory-policy volatile-lru
🗑️ 从所有Key中淘汰LRU数据,不管是否设置过期时间。
💡 适合热点数据集中、冷数据明显的场景(比如用户会话缓存)。
⏳ 优先淘汰剩余存活时间最短(TTL)的Key(仅限有过期时间的)。
📊 适合短期临时数据(如验证码缓存)。
🎲 随机淘汰有过期时间的Key。
⚠️ 可能误删重要数据,慎用!
🎲 随机淘汰任意Key。
🚨 除非业务允许数据随机丢失,否则不推荐。
📉 从有过期时间的Key中淘汰使用频率最低(LFU)的数据。
🌟 适合长期运行的服务,能精准识别冷门数据。
📉 从所有Key中淘汰LFU数据。
📌 高频访问型业务的首选(如电商商品缓存)。
noeviction
+ 监控告警 allkeys-lru
或 allkeys-lfu
volatile-ttl
volatile-lfu
+ 合理设置过期时间 # 设置最大内存(例如4GB) CONFIG SET maxmemory 4gb # 调整LRU/LFU算法精度(默认5,越高越耗CPU) CONFIG SET maxmemory-samples 10
用INFO memory
查看关键指标:
used_memory_human: 3.2G maxmemory_human: 4.0G evicted_keys: 1200 # 被淘汰的Key数量
优化信号📶
evicted_keys
持续增长 → 考虑扩容或优化策略 mem_fragmentation_ratio
> 1.5 → 内存碎片过多,重启或调整jemalloc
“没有最好的策略,只有最适合的!”
allkeys-lru
或allkeys-lfu
作为基线 redis-cli --hotkeys
找出热点Key volatile-ttl
💬 你的Redis用的哪种策略? 在评论区分享你的实战经验吧! 👇
本文由 频波光 于2025-08-02发表在【云服务器提供商】,文中图片由(频波光)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/515942.html
发表评论