Redis内存回收 - 过期键删除策略

Redis允许我们对键设置一个过期时间。当一个键过期后,这个键就不可获取,会被Redis删除。

那么这个过期的键,什么时候被删除呢?下文就介绍下Redis的过期键删除策略。

过期键删除策略

过期键删除策略有3种:定时删除、惰性删除、定期删除。

定时删除

在设置键的过期时间的同时,创建一个定时器,让定时器在键到期的时候立即执行对键的删除策略。

定时删除对内存最友好,但是对于CPU时间最不友好。

定时删除在键过期后立刻删除,能够及时回收键占用的空间。但是,删除键这一行为会占用CPU时间,当内存不紧张但CPU时间非常紧张的情况下,这一策略会对服务器的响应时间和吞吐量造成影响。

惰性删除

每次获取键的时候,检查键是否过期,过期就删除该键。

惰性删除对CPU时间最友好,但是对于内存非常不友好。

在使用惰性删除策略时,若一些过期键很少被访问,甚至永远也不会被访问,那么这些键就永远也不会删除。我们甚至可以把这种情况看作是一种内存泄漏。

定期删除

每隔一段时间,就对数据库进行一次检查,删除过期的键。至于要删除多少键、检查多少数据库,则由算法决定。

定期删除策略是前两种策略的整合和折中。

上面两种策略在单独使用的时候都有明显的缺点:

  • 定时删除占用太多CPU时间,影响服务器的响应时间和吞吐量。
  • 惰性删除浪费太多内存,有内存泄漏的危险。

定期删除策略的难点是确定删除操作执行的时长和频率。

Redis的过期键删除策略

Redis服务器实际采用的是惰性删除和定期删除两种策略,通过配合使用这两种策略,服务器可以很好的在合理使用CPU时间和避免浪费内存空间之间取得平衡。

相关推荐
苍何4 小时前
即梦Seedance2.0海外火爆出圈,AI 视频的 DeepSeek 时刻来了!(附实测教程)
后端
苍何4 小时前
阿里卷麻了,千问 Qwen-Image-2.0 发布,超强文字渲染、信息图、PPT 轻松做(附实测提示词)
后端
苍何4 小时前
被马斯克疯狂点赞的国产 AI,很可能是 AI 时代的抖音!
后端
苍何5 小时前
国产Windows 版 Claude Cowork 来了,内置海量 Skills,绝了。
后端
码农阿豪6 小时前
SpringBoot实现公正有趣好玩的年会抽奖系统
java·spring boot·后端
Java爱好狂.6 小时前
RDB&AOF持久化原理解析
java·数据库·redis·后端开发·java编程·java程序员·java八股文
全栈前端老曹7 小时前
【Redis】Redis 持久化机制 RDB 与 AOF
前端·javascript·数据库·redis·缓存·node.js·全栈
李慕婉学姐7 小时前
Springboot平安超市商品管理系统6sytj3w6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
PRINT!7 小时前
RabbitMQ实战项目(含代码仓库地址+视频教程地址)基本篇已更新完结,高级篇持续更新中
java·分布式·后端·微服务·rabbitmq
小心草里有鬼8 小时前
VMware虚拟机扩容
linux·后端·centos·vim