Redi是如何淘汰key的?
首先我们来学习 Redis 的淘汰原理。
系统线上运行中,内存总是昂贵且有限的,在数据总量远大于 Redis 可用的内存总量时,为了最大限度的提升访问性能,Redis 中只能存放最新最热的有效数据。
当 key 过期后,或者 Redis 实际占用的内存超过阀值后,Redis 就会对 key 进行淘汰,删除过期的或者不活跃的 key,回收其内存,供新的 key 使用。Redis 的内存阀值是通过 maxmemory 设置的,而超过内存阀值后的淘汰策略,是通过 maxmemory-policy 设置的,具体的淘汰策略后面会进行详细介绍。Redis 会在 2 种场景下对 key 进行淘汰,第一种是在定期执行 serverCron 时,检查淘汰 key;第二种是在执行命令时,检查淘汰 key。
第一种场景,Redis 定期执行 serverCron 时,会对 DB 进行检测,清理过期 key。清理流程如下。首先轮询每个 DB,检查其 expire dict,即带过期时间的过期 key 字典,从所有带过期时间的 key 中,随机选取 20 个样本 key,检查这些 key 是否过期,如果过期则清理删除。如果 20 个样本中,超过 5 个 key 都过期,即过期比例大于 25%,就继续从该 DB 的 expire dict 过期字典中,再随机取样 20 个 key 进行过期清理,持续循环,直到选择的 20 个样本 key 中,过期的 key 数小于等于 5,当前这个 DB 则清理完毕,然后继续轮询下一个 DB。
在执行 serverCron 时,如果在某个 DB 中,过期 dict 的填充率低于 1%,则放弃对该 DB 的取样检查,因为效率太低。如果 DB 的过期 dict 中,过期 key 太多,一直持续循环回收,会占用大量主线程时间,所以 Redis 还设置了一个过期时间。这个过期时间根据 serverCron 的执行频率来计算,5.0 版本及之前采用慢循环过期策略,默认是 25ms,如果回收超过 25ms 则停止,6.0 非稳定版本采用快循环策略,过期时间为 1ms。
第二种场景,Redis 在执行命令请求时。会检查当前内存占用是否超过 maxmemory 的数值,如果超过,则按照设置的淘汰策略,进行删除淘汰 key 操作。
-
国内外AI 生成模型合集
AI文本生成图像模型DALL-E 2: https://openai.com/product/dall-e-2Stable Diffusion: https://stablediffusionweb.com/Craiyon: http... 1177 0 24-07-14 -
在线查毒病毒分析网站合集
安全使用电脑的方式是软件尽量都从官网下载,但是如果想使用网友分享的软件,除了用本地杀毒软件查毒外,还可以使用各大杀毒厂商提供的在线... 824 0 25-03-10 -
AI:人工智能的本质与未来
人工智能(Artificial Intellegence,AI)就是让计算机完成人类心智(mind)能做的各种事情。通常,我们会说有些行为(如推理)是“智能的... 1227 0 24-05-28 -
Z-BlogPHPCMS建站系统
Z-Blog是一款小巧而强大的博客程序,同时支持Microsoft Access和Microsoft SQL Server两种数据库。Z-Blog有着强大的可定制性、丰富的插... 394 0 21-07-07 -
企业清洁卫生管理表格 - 企业管理表格
上班清洁自查表.doc清洁工作安排表.doc卫生区域计划表.doc 971 0 24-07-30 -
教师资格结构化面试七大类型试题答题思路及试题解析
教师结构化面试问答中如何做好自我介绍.pdf教师资格结构化面试7大类型试题汇总.pdf教师资格考试面试白皮书.pdf教师资格证统考面试答辩六大... 779 0 24-08-19 -
ChatGPT与AI绘画的本质
研究了四个多月AI绘画,又把ChatGPT作为日常工具用了一个多月后,忽然有点明白特德·姜那篇《ChatGPT是互联网的一张模糊JPEG图像》背后的含... 871 0 24-05-10 -
涉外事务管理表格 - 企业管理表格
高层经理接待日程表.doc公务联系单.doc参观申请登记表.doc参观许可证.doc来宾出入登记表.doc来宾来厂通知单.doc接待用餐申请表.doc接待申请及报告表.doc 915 0 24-07-28
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~