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

redis过期策略和内存淘汰机制

过期策略

Redis的过期策略采用的是定期删除惰性删除相结合的方式。

定期删除:Redis默认每100ms就机抽取一些设置了过期时间的key,并检具是否过,如果过期就删除。

定期删除是Redis主动删除策略策略.它可以确保过的key能够及时删除,但是会占用CPU资源去扫描key,可能会影响Redis的性能。

惰性删除:当一个key过时,不会立即从内存中删除.而是在访问这个key的时候才会触发删除操作。

惰性删除是Redis的被动删除策略,它可以节省CPU资源,但是会导致过期的key始终保存在内存中,占用存空间。

内存淘汰

Redis支持8种不同的内存淘汰策略:

noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略

volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰

allkeys-random:对全体key ,随机进行淘汰。也就是直接从db->dict中随机挑选

volatile-random:对设置了TTL的key ,随机进行淘汰。也就是从db->expires中随机挑选

allkeys-lru: 对全体key,基于LRU算法进行淘汰

volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰

allkeys-lfu: 对全体key,基于LFU算法进行淘汰

volatile-lfu: 对设置了TTL的key,基于LFI算法进行淘汰

以下是腾讯针对Redis的淘汰策略设置给出的建议:

当Redis作为缓存使用的候,推荐使用allkeys-lru淘汰策略。该策略会将最近最少使用的Key淘汰。默认倩况下,使用频率最低则后期命中的概率也低.所以将其淘汰。

当Redis作为半缓存半持久化使用,可以使用volatile-lru.但因为Redis本身不建议保存持久化数据,所以只作为备选方案。


http://www.mrgr.cn/news/45008.html

相关文章:

  • 基于SpringBoot“花开富贵”花园管理系统【附源码】
  • 基于SpringBoot博物馆游客预约系统【附源码】
  • vue2和vue3中的组件间通信知识点总结
  • 深入理解 JavaScript 中的表达式、运算符、语句和声明概念
  • 二进制求和
  • Bianchi模型、python计算及ns3验证_关于E[P*]的补充
  • Kubernetes 洞察:DaemonSet 全解析
  • Facebook 正式推出了一项专为 Z 世代设计的全新改版
  • 【时间盒子】-【9.任务设置项】自定义任务名称、任务时长等设置项组件
  • 软件测试比赛-学习
  • github项目学习——ruoyi-vue-pro
  • 音视频入门基础:FLV专题(14)——FFmpeg源码中,解码Script Tag的实现
  • 基于Python的美术馆预约系统【附源码】
  • [Algorithm][贪心][合并区间][无重叠区间][用最少数量的箭引爆气球]详细讲解
  • 数据结构 ——— 相交链表(链表的共节点)
  • CART回归树中的 方差减少量 计算步骤和示例
  • Ancient City Ruins 古代城市遗址废墟建筑游戏场景
  • 在数据中,如何删除表中的记录?
  • Cesium的一些神奇概念及技术流程(1)
  • 告别音乐小白!字节跳动AI音乐创作工具,让你一键变作曲家!