新闻中心

Redis数据过期策略是什么 Redis内存淘汰机制【解析】

2025-12-13
浏览次数:
返回列表
Redis过期策略与内存淘汰机制协同工作:前者用惰性+定期删除处理到期数据,后者在maxmemory触发时按策略(如allkeys-lru)淘汰key;二者分属时间与空间维度,不可替代。

redis数据过期策略是什么 redis内存淘汰机制【解析】

Redis 数据过期策略和内存淘汰机制是两套独立但协同工作的机制:前者解决“数据什么时候失效”,后者解决“内存不够时删谁”。它们不互为替代,而是分阶段配合——先靠过期策略清理自然到期的数据,再靠淘汰机制兜底应对内存压力。

过期策略:惰性 + 定期,双管齐下

Redis 不采用“一到时间就立刻删除”的定时删除(避免单线程阻塞),而是用两种轻量方式组合处理:

  • 惰性删除:每次访问 key 前,Redis 检查它是否已过期;若过期,当场删除并返回 nil。优点是零额外 CPU 开销,缺点是冷数据可能长期滞留内存。
  • 定期删除:默认每秒执行 10 次(由配置项 hz 控制),每次从过期字典中随机抽 20 个 key 检查,若其中过期比例超 25%,就再抽一轮,直到比例达标或单次耗时超 25ms 为止。它能主动释放一部分内存,但无法覆盖全部过期键。

注意:主库负责过期判断与触发 del 指令,从库只同步执行,存在短暂主从不一致风险;所有过期 key 都存于独立的 expires 字典,不影响主键空间查询效率。

内存淘汰机制:maxmemory 触发,按策略选删

当 Redis 实际内存使用达到 maxmemory 限制(如 maxmemory 256mb)时,写入新数据前会触发淘汰。策略通过 maxmemory-policy 配置,常见选项有:

Figma Figma

Figma 是一款基于云端的 UI 设计工具,可以在线进行产品原型、设计、评审、交付等工作。

Figma 1371 查看详情 Figma
  • allkeys-lru:在全部 key 中淘汰最近最少使用的(推荐用于纯缓存场景)
  • volatile-lru:只在设置了过期时间的 key 中淘汰 LRU 的(适合缓存+持久化混合场景,但需谨慎)
  • volatile-ttl:只在带过期时间的 key 中,优先淘汰剩余存活时间最短的
  • noeviction:默认策略,内存满则拒绝写入并报错(OOM),适用于强一致性要求场景
  • allkeys-lfu:基于访问频次淘汰(Redis 4.0+ 支持),适合识别“低频但重要”的长尾数据

淘汰不是实时逐个扫描全量 key,而是采样(默认 5 个)后近似计算,兼顾性能与效果。

关键区别与协同逻辑

过期策略关注的是“时间维度”——键是否到了 TTL 终点;内存淘汰关注的是“空间维度”——当前能否腾出位置写新数据。

  • 一个 key 即使已过期,若未被惰性检查或定期扫描抽中,仍会留在内存中,直到淘汰机制启动时才可能被顺带清掉(取决于所选策略是否覆盖它)
  • 如果用了 noeviction 策略,过期键不及时清理 + 内存打满,就会直接写失败;所以生产环境通常搭配 allkeys-lruvolatile-lru,并合理设置 hz(建议 10–25)
  • 大量 key 同一时刻过期(比如批量设了相同 EXPIREAT)会加剧定期删除循环,导致 CPU 短时飙升、响应延迟,应主动加随机偏移(如 ±300 秒)分散过期时间

基本上就这些。理解清楚这两层机制的分工和边界,才能避免缓存击穿、内存溢出或误删有效数据的问题。

以上就是Redis数据过期策略是什么 Redis内存淘汰机制【解析】的详细内容,更多请关注其它相关文章!


# 有哪些  # 宁波网站建设团队招聘  # 商业网站建设价钱  # 郴州网站建设策划方案  # 南阳seo虾哥网络  # 建材企业网站推广  # 京山seo获客服务好  # 优书网站建设ppt制作  # 怎样做seo项目  # 南明区外贸网络推广营销  # 绍兴企业网站建设  # 什么时候  # redis  # 就会  # 都有哪些  # 协同工作  # 如何做  # 有什么区别  # 只在  # 几种  # 的是  # red  # 区别 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 使用Python高效删除Word宏并转换DOCM为DOCX格式  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  学习通在线学习平台 学习通网页版直接进入课程中心  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  微信群消息显示延迟如何解决 微信群消息刷新优化方法  ACG动漫视频网入口 ACG动漫*免费正版观看地址  实现分段式页面滚动导航:CSS与J*aScript教程  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  顺丰国际快递查询 国际件官方查询入口  c++项目目录结构应该如何组织_c++工程化项目结构规范  海量存储:机器视觉智能化的核心基石  J*aScript动态修改指定div内所有a标签样式指南  fishbowl官网免费版 fishbowl养鱼网站入口  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  Pygame教程:解决用户输入与游戏状态更新不同步问题  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  PostgreSQL海量数据高效导入策略:Python与Django实践指南  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  C++ map遍历方法大全_C++ map迭代器使用总结  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  J*aScript 字符串标签转换:使用正则表达式高效替换  Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁  期待已久:小米17 Ultra、小米首款NAS本月登场  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  曝R星经典之作开发图 设计简陋但信息密集!  cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  J*aScript生成器_j*ascript异步迭代  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  顺丰快件物流信息 官方网站查询入口  QQ邮箱正确登录入口_QQ邮箱官方网站使用地址  AO3最新镜像入口 Archive of Our Own官方平台访问  韩小圈电脑版在线入口_网页版免费登录地址  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享 

搜索