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

redis的过期策略以及内存淘汰机制

redis采用的是定期删除+惰性删除策略。 为什么不用定时删除策略? 定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要
将时间应用在处理请求,而不是删除key,因此没有采用这一策略. 定期删除+惰性删除是如何工作的
呢?

定期删除: redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。 于是,惰性删除派上用场。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。 采用定期删除+惰性删除就没其他问题了么?不是的,如果定期删除没删除key。然后你也没即时去请求key,也就是说惰性删除也没生效。这样,redis的内存会越来越高。那么就应该采用内存淘汰机制。 在redis.conf中有一行配置

maxmemory-policy volatile-lru

该配置就是配内存淘汰策略的:

volatile-lru: 从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl: 从 已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

volatile-random: 从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

allkeys-lru: 从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

allkeys-random: 从数据集(server.db[i].dict)中任意选择数据淘汰

no-enviction(驱逐): 禁止驱逐数据,新写入操作会报错 ps:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。

http://www.lryc.cn/news/319120.html

相关文章:

  • 华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)
  • 网络通信与网络协议
  • 【矩阵】240. 搜索二维矩阵 II【中等】
  • 详解uniapp的生命周期
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PluginComponent)
  • mysql笔记:15. 事务和锁
  • Learn OpenGL 15 面剔除
  • EndeavourOs(arch系)安装sunpinyin输入法(ibus) + 迅雷(xunlei-bin)
  • Spring Cache框架的介绍和使用
  • perl 用 XML::Parser 解析 XML文件,访问哈希
  • MATLAB中的矩阵和数组,它们之间有什么区别?
  • python爬虫实战——抖音
  • Day1-力扣刷题学习打卡
  • C语言的位操作与位字段
  • 应用实战|从头开始开发记账本1:如何获取BaaS服务
  • el-form v-for循环列表的表单如何校验
  • 笔记:《NCT全国青少年编程能力等级测试教程Python语言编程三级》
  • 地平线旭日x3派部署yolov5--全流程
  • 【Golang星辰图】Go语言云计算SDK全攻略:深入Go云存储SDK实践
  • 深入理解TCP:序列号、确认号和自动ACK的艺术
  • 家电工厂5G智能制造数字孪生可视化平台,推进家电工业数字化转型
  • ctf_show笔记篇(web入门---代码审计)
  • c语言的字符串函数详解
  • HarmonyOS NEXT应用开发—折叠屏音乐播放器方案
  • Java项目:55 springboot基于SpringBoot的在线视频教育平台的设计与实现015
  • 说下你对TCP以及TCP三次握手四次挥手的理解?
  • wsl-oracle 安装 omlutils
  • Python类属性和对象属性大揭秘!
  • 北斗卫星在桥隧坡安全监测领域的应用及前景展望
  • 如何通过堡垒机JumpServer使用VisualCode 连接服务器进行开发