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

Redis面试——缓存淘汰和过期删除

一、缓存淘汰策略

  1. 第一种是不淘汰数据(noeviction):当缓存使用满了,有新数据写入请求时,直接拒绝新数据的写入,而不会删除旧数据
  2. 第二种是淘汰过期键(volatile-ttl):优先淘汰剩余过期时间最短的键,即即将过期的键
  3. 第三种是淘汰过期键(volatile-random):从设置了过期时间的键中,随机淘汰可能过期的键
  4. 第四种是淘汰过期键(volatile-lru):从设置了过期时间的键中,淘汰最近最少使用(Less Recently Used ,LRU)的过期键
  5. 第五种是淘汰过期键(volatile-lfu):从设置了过期时间的键中,淘汰最近使用频率最低(Least Frequently Used,LFU)的过期键
  6. 第六种是淘汰所有键(allkeys-random):从所有键中随机淘汰键,不考虑键是否设置了过期时间
  7. 第七种是淘汰所有键(allkeys-lru):从所有键中淘汰最近最少使用(LRU)的键
  8. 第八种是淘汰所有键(allkeys-lfu):从所有键中淘汰最近使用频率最低(LFU)的键

二、过期删除策略

  1. 惰性删除:当客户端执行的命令涉及某个键时,Redis 服务器在执行该命令前,会检查此键是否过期,若已过期则立即删除。该策略的弊端在于,若存在大量长时间未被访问的过期键,会持续占用缓存空间
  2. 定期删除:Redis 服务器通过后台线程执行定期删除任务,每秒轮询 10 次,每次随机抽取 20 个键,删除其中的过期键。若抽取的 20 个键中过期键占比超过 25%,则继续抽取并删除过期键,直至过期键占比低于 25%

三、总结与配置建议

(1)缓存淘汰配置建议

  1. 在缓存场景下,通常选择 “淘汰所有键 — 最近最不常使用的键(allkeys - lru)” 或 “淘汰所有键 — 最近使用频率最低的键(allkeys - lfu)”,优先保存热门键,以保证缓存中存放的是访问频繁的数据,提升缓存命中率
  2. 在会话场景下,通常选择 “淘汰过期键 — 优先淘汰即将过期的键(volatile - ttl)”,因为会话一般都有明确的过期时间,这样可以及时清理过期的会话数据

(2)过期删除配置建议

  1. 调整抽查频率:修改 hz 参数(默认 10,即每秒 10 次检查)
  2. 异步删除:开启 lazyfree - lazy - expire(Redis 4.0+),减少主线程阻塞

相关文章:

  • 深度学习笔记39_Pytorch文本分类入门
  • element-plus添加暗黑模式
  • 【人工智能】DeepSeek 与 RAG 技术:构建知识增强型问答系统的实战
  • 【vLLM 学习】Aqlm 示例
  • 嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
  • PHP腾讯云人脸核身获取FaceId
  • 哪种电脑更稳定?Mac?Windows?还是云电脑? 实测解密
  • YOLOv8技术详解:革命性的目标检测算法
  • Spring lazy-init 懒加载的原理
  • Linux 日常运维命令大全
  • Tensorflow释放GPU资源
  • hadoop的三大结构及各自的作用
  • 使用Jasypt对配置文件内容加密
  • 十天借助 Trae 实现 “幸运塔塔屋” 小程序时光记忆功能之旅
  • 学术AI工具推荐
  • 前端零基础入门到上班:Day7——表单系统实战全解析
  • 2025最新系统 Linux 教程(四)
  • Hadoop的三大结构及其作用
  • 开源 vs. 闭源:大模型的未来竞争格局
  • 学习设计模式《一》——简单工厂
  • 最大涨幅9800%!金价新高不断,引发期权“末日轮”效应,沪金期权多张合约大涨
  • 瑞穗银行(中国)有限公司行长:重庆赛力斯超级工厂的智能化程度令人震惊
  • 夸大事实拍视频发网络,镇雄两名网红勒索两千元删帖费被拘
  • 解放日报:128岁的凤凰自行车“双轮驱动”逆风突围
  • 一季度全国纪检监察机关共处分18.5万人,其中省部级干部14人
  • 一年一CT,十年进ICU?关于CT检查致癌的真相