Redis 过期与淘汰策略深度解析:从原理到 Spring Boot 实战,彻底搞懂内存管理机制!

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!

在使用 Redis 时,你是否遇到过这些问题:

  • 缓存数据明明设置了过期时间,为什么还占着内存不释放?
  • Redis 内存爆了,新数据写不进去,报错(error) OOM command not allowed
  • 为什么有些 key 过期后还能查到?

这些问题的根源,都指向 Redis 的两大核心机制:过期策略(Expire Policy)内存淘汰策略(Eviction Policy)

本文将用通俗语言 + 原理图解 + Spring Boot 实战代码,带你彻底搞懂:

  • ✅ Redis 如何自动清理过期数据?
  • ✅ 内存不足时,Redis 怎么决定删哪些 key?
  • ✅ 如何配置策略避免生产事故?

一、过期策略(Expire Policy):自动清理“过期”数据

🎯 目标

当 key 设置了 TTL(Time To Live),到期后自动删除,避免脏数据长期占用内存。

🔧 实现方式:惰性删除 + 定期删除(双保险!)

1. 惰性删除(Lazy Expiration)
  • 触发时机:客户端访问某个 key 时
  • 操作:先检查是否过期,若过期则删除,再返回结果
  • 优点:CPU 友好,不主动扫描
  • 缺点:长期不访问的过期 key 会一直占内存(“内存泄漏”)
// 示例:GET user:1001 // Redis 内部逻辑: // if (key exists && isExpired(key)) { // delete(key); // return null; // }
2. 定期删除(Active Expiration)
  • 触发时机:Redis 每隔100ms主动扫描
  • 操作
    • 随机抽取20 个设置了过期时间的 key
    • 删除其中已过期的 key
    • 如果过期比例 > 25%,重复扫描(最多 16 次或耗时 > 25ms)
  • 优点:清理“僵尸”过期 key,减少内存浪费
  • 缺点:无法保证实时性(可能延迟几秒到几分钟)

📌总结

  • 惰性删除:访问时才清理(保数据正确性)
  • 定期删除:后台定时清理(保内存效率)
  • 两者互补,但都无法做到“秒级精准删除”!

二、内存淘汰策略(Eviction Policy):内存不足时的“紧急预案”

🎯 目标

当 Redis 内存使用达到maxmemory上限时,自动删除部分 key,腾出空间给新数据。

⚠️ 注意:过期策略 ≠ 淘汰策略

  • 过期策略:只删已过期的 key
  • 淘汰策略:内存不够时,不管是否过期都可能删

🔧 配置方式

# redis.conf maxmemory 2gb # 设置最大内存 maxmemory-policy allkeys-lru # 设置淘汰策略

📊 8 种淘汰策略详解(附适用场景)

策略作用范围淘汰规则适用场景
noeviction所有 key不淘汰,新写入报错数据不能丢(如计数器)
allkeys-lru所有 keyLRU:最近最少使用通用推荐!缓存场景
volatile-lru仅带 TTL 的 keyLRU混合存储(部分缓存+部分持久)
allkeys-lfu所有 keyLFU:最不经常使用访问频率差异大(热点/冷门明显)
volatile-lfu仅带 TTL 的 keyLFU同上,但只淘汰缓存数据
allkeys-random所有 key随机删除对数据无偏好
volatile-random仅带 TTL 的 key随机删除同上
volatile-ttl仅带 TTL 的 keyTTL 最短优先优先清理快过期的数据

💡LRU vs LFU

  • LRU:关注“最近是否用过” → 适合短期热点
  • LFU:关注“总共用了多少次” → 适合长期热点

三、Spring Boot 实战:如何正确使用?

✅ 场景 1:纯缓存系统(推荐allkeys-lru

# application.yml spring: redis: # ... 其他配置
// 设置缓存(无需手动设 TTL,靠 LRU 自动淘汰) redisTemplate.opsForValue().set("product:1001", productJson); // 或设一个较长 TTL 作为兜底 redisTemplate.opsForValue().set("product:1001", productJson, 2, TimeUnit.HOURS);

📌优势:热点数据常驻内存,冷数据自动淘汰,内存利用率高。


✅ 场景 2:混合存储(部分数据不能丢)

// 永久数据(如用户 ID 映射)→ 不设 TTL redisTemplate.opsForValue().set("user:id:name:1001", "张三"); // 缓存数据(如商品详情)→ 设 TTL redisTemplate.opsForValue().set("product:1001", json, 30, TimeUnit.MINUTES);
# redis.conf maxmemory-policy volatile-lru # 只淘汰带 TTL 的 key

效果:永久数据永不淘汰,缓存数据按 LRU 清理。


❌ 反例 1:不设 maxmemory → 内存爆炸!

# 错误:未配置 maxmemory # 后果:Redis 一直吃内存,直到系统 OOM 杀死进程!

❌ 反例 2:用noeviction但不做容量规划

// 错误:所有 key 都不设 TTL,且 maxmemory-policy=noeviction redisTemplate.opsForValue().set("log:" + System.currentTimeMillis(), log); // 后果:内存满后,所有 SET 操作失败,服务不可用!

四、生产环境最佳实践

1.必须设置maxmemory

  • 建议设为物理内存的70%~80%(留空间给 OS 和 fork)
  • 示例:机器 16GB →maxmemory 12gb

2.选择合适的淘汰策略

  • 90% 场景用allkeys-lru
  • 若有永久数据 + 缓存数据 → 用volatile-lru+缓存 key 必须设 TTL

3.监控关键指标

# 查看过期/淘汰统计 redis-cli info memory # 输出: # expired_keys:12345 # 累计过期 key 数 # evicted_keys:6789 # 累计淘汰 key 数(>0 说明内存压力大!)

4.避免 Big Key

  • 一个大 Hash/List 可能导致淘汰时阻塞主线程
  • 定期运行redis-cli --bigkeys检测

五、常见问题解答

❓ Q1:为什么过期 key 还能查到?

  • 原因:还没被惰性删除 or 定期删除扫描到
  • 验证:执行TTL key,若返回-2表示已删除,-1表示无过期时间,>0表示未过期

❓ Q2:volatile-lru没有可淘汰 key 会怎样?

  • 答案:退化为noeviction,新写入报错!

❓ Q3:LRU 是精确的吗?

  • 答案:Redis 使用近似 LRU(采样 5~10 个 key 选最旧的),节省内存。可通过maxmemory-samples调整精度(默认 5)。

六、总结:一张表搞定策略选择

你的需求过期策略淘汰策略是否设 TTL
纯缓存(如商品详情)allkeys-lru可设(兜底)
混合存储(用户信息+缓存)volatile-lru缓存必须设
数据绝对不能丢(如分布式锁)noeviction不设
日志类数据(可丢失)allkeys-random建议设

结语

Redis 的过期与淘汰策略,是内存高效利用的核心。理解它们,你就能:

  • 避免内存泄漏
  • 防止 OOM 崩溃
  • 让热点数据常驻内存

记住:不设maxmemory的 Redis,就像没装刹车的跑车——迟早出事!

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1200799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PPIO × 商汤 LazyLLM: 一站式构建 Multi-Agent |实操指南

随着大模型技术从单一对话向多智能体(Agent)协作演进,如何低成本、高效率地完成应用开发与落地成为行业焦点。 近日,PPIO 正式与 LazyLLM 达成深度合作,通过 LazyLLM 的统一接口和灵活的编排能力,配合 PPIO…

2026公务车定制厂家推荐:实力品牌与专业定制方案解析

公务车定制是针对特定行业功能需求、场景适配及使用习惯开展的个性化车辆设计服务,通过对车型性能、配置、外观等方面的专属优化,为政务、警务、民生服务等领域提供适配性更强的出行工具。一、主要业务场景车型特点外…

分析诚信的豪雅新乐学配镜机构,北京靠谱的有哪些?

随着儿童近视率逐年攀升,家长们对近视防控镜片的需求愈发迫切,其中豪雅新乐学作为主流防控镜片之一,因临床数据显示可平均延缓近视加深67%,成为众多家庭的选择。但家长们在挑选配镜机构时,往往被资质是否正规镜片…

收藏!30+程序员破局35岁危机:从Java后端到大厂大模型岗的实战指南

各位30的程序员同行,你是否也曾在深夜对着电脑屏幕陷入沉思:手头的CRUD工作日渐机械,职业晋升通道一眼就能望到尽头,看着身边20多岁的同事轻松驾驭新框架,还能毫无压力地通宵加班——这一刻,你是不是也在怀…

域名系统支撑无人机网络身份认证及IPv6创新应用研究

编者按:中国互联网络信息中心以互联网域名管理技术国家工程实验室为平台,紧扣网络强国与数字中国建设重大战略需求,持续开展了围绕域名系统支撑算力网络、卫星互联网、区块链异构网络、量子电子混合计算网络等下一代互联网服务架构、标识技术…

工业设计公司服务找哪家,京津冀璞新科技优势盘点

2026年制造业与科技产业深度融合,工业设计已成为企业提升产品竞争力、实现品牌价值跃迁的核心支点。无论是医疗器械的人机工学优化、机器人的结构创新,还是新能源产品的外观与功能融合,优质工业设计公司的专业能力直…

录屏老翻车?那是你没遇到sunwoo录屏大师!

做自媒体或者经常需要做教程的朋友,应该都经历过被“录屏”折磨的日子。 用系统自带的 Xbox Game Bar 吧,功能太简陋,想录个带摄像头的窗口都费劲;用那些大名鼎鼎的商业软件吧,要么收费贵得离谱,要么免费版…

收藏级指南|大模型SFT与RL核心训练调优技巧,小白也能看懂

本文系统拆解大模型微调(SFT)与强化学习(RL)的核心技术要点,聚焦实操落地能力,专为程序员及大模型入门者打造。SFT部分重点拆解Prompt设计、高质量数据集构建、参数调优逻辑;RL部分深入讲解奖励…

Redis 为什么这么快?深入解析高性能背后的秘密(附 Spring Boot 实战)

视频看了几百小时还迷糊?关注我,几分钟让你秒懂! 在高并发系统中,Redis 几乎成了“标配”。无论是缓存、限流、分布式锁,还是实时排行榜、消息队列,Redis 都能轻松应对。但你有没有想过:为什么 …

婴幼儿喘息怎么办?布咳乐F6高性能罐式雾化器填补市场关键空白

如何让哮喘患儿的雾化治疗更加精准高效?这不仅是万千家长关注的焦灼点,也是儿科呼吸治疗领域亟待突破的课题。2026年初,高端雾化器品牌布咳乐全新产品F6系列新一代高性能罐式雾化器正式上市。该系列产品包含F6 Baby婴幼儿罐式雾化器和F6 Kids…

讲讲上海新房除甲醛品牌供应商,生态美家哪家性价比高?

随着人们对室内健康的关注度不断提升,新房除甲醛已成为装修后的刚需环节,但市场上鱼龙混杂的服务让很多家庭陷入选择困境。本文聚焦知名的新房除甲醛专业公司新房除甲醛品牌供应商有实力的新房除甲醛专业公司三大核心…

基于供应链数据泄露的硬件钱包钓鱼攻击分析与防御机制研究

摘要 2026年初,加密货币硬件钱包厂商Ledger披露其第三方电商合作伙伴Global-e发生数据泄露事件,导致部分客户的身份信息与订单记录外泄。随后,攻击者利用泄露数据发起高度定制化的钓鱼攻击,伪造“Ledger与Trezor合并”通知&#…

文山州马关丘北广南富宁英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜

在全球化留学趋势下,雅思成绩已成为文山州马关、丘北、广南、富宁地区学子出国深造的核心门槛。然而,当地考生在雅思培训、选课、考试全流程中普遍面临优质教育资源稀缺、提分技巧针对性不足、个性化方案缺失、性价比…

广州公关公司 TOP 级选择!汇志传媒二十年深耕,筑牢品牌声誉防线

在信息传播高度碎片化、舆情风险瞬息万变的商业环境中,品牌声誉已成为企业核心竞争力的重要构成。对于企业而言,筛选具备专业方法论、实战积淀与资源整合能力的公关服务机构,是有效应对舆论挑战、实现品牌价值进阶的…

收藏必学!一文看懂大模型三大架构:从Encoder-only到Decoder-only的完全指南

文章详细介绍了大模型三大架构:Encoder-only(仅编码器,适合NLU任务)、Encoder-Decoder(编码器解码器,适合机器翻译等条件生成任务)和Decoder-only(仅解码器,已成为主流&a…

必收藏!RAG(检索增强生成)全解析:从原理到流程,小白也能看懂的大模型优化技术

在大模型落地应用中,“知识过时”“胡言乱语”“隐私泄露”等问题常常成为开发者的绊脚石。而RAG(检索增强生成)技术,正是破解这些痛点的关键框架——它将信息检索的精准性与生成式AI的创造力相结合,通过外挂外部知识库…

2026年华东阿里云企业邮箱代理服务全解析,推荐高性价比合作伙伴!

在数字化转型浪潮中,企业邮箱作为核心办公工具,其稳定性、安全性与协同能力直接影响运营效率。面对华东地区众多代理服务商,企业如何选择既能满足业务需求又具备成本优势的合作伙伴?本文将通过技术、功能、服务三方…

【珍藏指南】AI Agent核心技术解析:从第一性原理到多Agent协作的未来

文章探讨了AI Agent的理论基础、发展轨迹和未来展望。从第一性原理出发,分析了Agent协作技术从手艺人到现代企业组织的五个发展阶段,详细阐述了Agent的算力、知识记忆、预测功能和动作执行等核心能力。未来,AI Agent将朝着专业化、多模态、减…

2026年杨家坪、仁安里特色茶馆排行榜,私密环境茶馆哪个口碑好

在山城重庆的烟火气里,茶馆从来不是老派的代名词——它可以是商务洽谈的私密空间,是年轻人小聚的潮流据点,更是游客触摸重庆文化的窗口。但想找一家私密不吵、有特色的茶馆,却常让人选得眼花缭乱:商圈店太喧闹,老…

2026年市场评价好的AGV货架批发厂家找哪家,仓储货架/精益管料架/货架定制/不锈钢货架,AGV货架生产厂家选哪家

随着智能制造与物流自动化需求的爆发式增长,AGV(自动导引车)货架作为智能仓储的核心设备,正成为企业提升仓储效率、降低运营成本的关键选择。然而,面对市场上数百家供应商,采购方如何筛选技术可靠、服务完善的合…