当前位置: 首页 > news >正文

Redis过期策略与内存淘汰机制面试笔记

Redis过期策略

Redis采用惰性删除定期删除相结合的策略来处理过期键。

惰性删除(Lazy Expiration)

当访问某个键时才检查是否过期,如果过期则删除并返回空值。

优点:CPU友好,只在访问时检查,避免无效检查
缺点:内存不友好,过期但未访问的键会一直占用内存

定期删除(Active Expiration)

Redis定期扫描数据库,随机选择一定数量的键进行过期检查并删除。

执行模式

  • SLOW模式:定时任务,默认10Hz频率,每次最多25ms
  • FAST模式:频率不固定,间隔不低于2ms,每次不超过1ms

优点:通过限制执行时长和频率平衡CPU开销,有效释放过期键内存
缺点:难以确定最优的执行时长和频率

内存淘汰策略

当Redis内存不足时,会根据配置的淘汰策略删除数据为新数据腾出空间。

淘汰策略分类

针对所有键

  • allkeys-lru:基于LRU算法淘汰最近最少使用的键
  • allkeys-lfu:基于LFU算法淘汰最少使用频率的键
  • allkeys-random:随机淘汰键

针对设置TTL的键

  • volatile-lru:对有TTL的键使用LRU算法淘汰
  • volatile-lfu:对有TTL的键使用LFU算法淘汰
  • volatile-ttl:优先淘汰TTL值较小的键
  • volatile-random:随机淘汰有TTL的键

不淘汰

  • noeviction:不淘汰任何键,内存满时拒绝写入(默认策略)

算法补充

LRU(Least Recently Used):淘汰最近最少使用的数据,适合时间局部性强的场景

LFU(Least Frequently Used):淘汰使用频率最低的数据,适合访问模式相对固定的场景

常见面试问题及答案

Q1:数据库有1000万数据,Redis只能缓存20万数据,如何保证Redis中都是热点数据?

答案:使用allkeys-lru淘汰策略。该策略会淘汰最近最少使用的键,保留经常访问的热点数据,确保缓存的有效性。

Q2:Redis内存用完了会发生什么?

答案:取决于配置的淘汰策略:

  • 如果是默认的noeviction策略,会直接返回错误,拒绝写入操作
  • 如果配置了其他淘汰策略,会按照相应规则删除数据后允许写入

Q3:如何选择合适的淘汰策略?

答案

  • 对于缓存场景,推荐allkeys-lru,确保热点数据留存
  • 如果业务明确区分了临时数据和永久数据,可选择volatile-lru
  • 对于访问模式稳定的场景,可考虑allkeys-lfu
  • 生产环境避免使用noeviction,除非有特殊需求

总结

Redis的过期和淘汰机制是其内存管理的核心特性。过期策略确保及时清理过期数据,淘汰策略在内存不足时保证服务可用性。理解这些机制有助于合理配置Redis参数,优化缓存性能。

http://www.xdnf.cn/news/1107703.html

相关文章:

  • [es自动化更新] 策略体系 | 策略源(容器镜像)
  • Java中的方法传参机制
  • 【B题成品论文】2025APMCM亚太杯中文赛B题成品论文(无偿分享)
  • Java 大视界:基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(2025 实战全景)
  • 舒尔特方格训练小游戏流量主微信小程序开源
  • 数据分析库 Pandas
  • SQL新手入门详细教程和应用实例
  • 【MediaSoup】MS_DUMP打印转换为PLOGI的形式
  • 13. https 是绝对安全的吗
  • 二叉树算法进阶
  • Redis渗透思路总结
  • 第七章应用题
  • JVM--虚拟线程
  • Spring Boot 中使用 Lombok 进行依赖注入的示例
  • RMSNorm实现
  • linux----------------------线程同步与互斥(上)
  • linux_线程概念
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销直播质量提升策略研究
  • Vue框架之钩子函数详解
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文分享
  • [爬虫实战] 多进程/多线程/协程-异步爬取豆瓣Top250
  • QML与C++相互调用函数并获得返回值
  • PID控制算法理论学习基础——单级PID控制
  • 多 Agent 强化学习实践指南(一):CTDE PPO 在合作捕食者-猎物游戏中的应用详解
  • GitHub 操作指南:项目协作与自动化工作流实践
  • 【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow、提供全部源代码)
  • 【Elasticsearch】function_score与rescore
  • html-初级标签
  • 【离线数仓项目】——数据模型开发实战
  • S7-200 SMART PLC:硬件、原理及接线特点全解析