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

Redis 数据过期及淘汰策略

Redis 数据过期及淘汰策略

过期策略

定时过期

在设置key​的过期时间的同时,为该key​创建一个定时器,让定时器在key​的过期时间来临时,对key进行删除。到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好,但是会占用大量的CPU​资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

惰性过期

只有当访问一个key​时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU​资源,却对内存非常不友好。极端情况可能出现大量的过期key​没有再次被访问,从而不会被清除,占用大量内存。

定期过期

每隔一定的时间,会扫描一定数量的数据库的expires​字典中一定数量的key​,并清除其中已过期的key​。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU​和内存资源达到最优的平衡效果。

淘汰策略

Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,如何申请新的内存。

  • noeviction​:当内存不足以容纳新写入数据时,新写入操作会报错。
  • allkeys-lru​:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key
  • allkeys-random​:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。
  • volatile-lru​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。
  • volatile-random​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
  • volatile-ttl​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

总结

过期策略选择

惰性删除、定期删除组合模式。

淘汰策略选择

allkeys-lru

相关文章:

  • 轻松创建对象——简单工厂模式(Java实现)
  • 【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案
  • 《Nature》文章:ChatGPT帮助我学术写作的三种方式
  • Java版Flink使用指南——将消息写入到RabbitMQ的队列中
  • Spring——自动装配Bean
  • 编程语言一般学几种语言:探索编程语言的广度与深度
  • 商家为何疯狂送钱?用户如何省钱?一篇文章带你了解!
  • Qt图形编辑类使用总结
  • # 数仓建模:如何构建主题宽表模型?
  • 2.4G芯片开发的遥控玩具方案介绍 东莞酷得
  • Ubuntu中sqlite的使用方法
  • vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)
  • Vue3 + Vite项目使用SVG图片
  • OLED柔性显示屏的金线封装胶
  • 【开源合规】开源许可证风险场景详细解读
  • Android组件 - 收藏集 - 掘金
  • CODING 缺陷管理功能正式开始公测
  • interface和setter,getter
  • Iterator 和 for...of 循环
  • Koa2 之文件上传下载
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • node入门
  • TypeScript迭代器
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 如何实现 font-size 的响应式
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 消息队列系列二(IOT中消息队列的应用)
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Nginx实现动静分离
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 如何正确理解,内页权重高于首页?
  • ​马来语翻译中文去哪比较好?
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (7)STL算法之交换赋值
  • (windows2012共享文件夹和防火墙设置
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (南京观海微电子)——示波器使用介绍
  • (七)Flink Watermark
  • (七)Java对象在Hibernate持久化层的状态
  • (生成器)yield与(迭代器)generator
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net多线程总结