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

redis中key的过期和淘汰

一、过期(redis主动删除)

  • 设置了ttl过期时间的key,在ttl时间到的时候redis会删除过期的key。但是redis是惰性过期。
  • 惰性过期:redis并不会立即删除过期的key,而是会在获取key的时候判断key是否过期,如果发现key过期了,才会进行删除。
  • 定期删除:redis为了提升性能和减少内存的使用率,会开启1个定时任务,serverCorn默认100ms执行1次,从expires dict中以桶的维度去扫描设置了过期时间的key,扫描20个为至(默认,可配置,最多扫描400个桶),如果某个桶扫到1半已经扫到了20个key,则会把当前这个桶扫完。然后从扫描到的key中删除掉过期的key,如果删除比例超过10%(默认值,可配置),则会接着执行扫描和删除逻辑,循环16次之后会有个时间监测,如果超过指定时间则跳出。

二、淘汰(不得已而为之)

  • 当redis内存不足的时候,set key没有足够的内存,redis以1定的策略删除掉1些key(有效的数据),来释放内存,从而保证新数据能set成功,这就是淘汰。
  • 淘汰策略:
    • novication: 默认淘汰策略,不删除key,能读,不能写;
    • allkeys-random:从所有的key中,随机删除key;
    • volatile-random:随机从设置了过期时间的key中,删除数据;
    • allkeys-lfu:从所有key中删除使用频率(次数)最少的key;
    • volatile-lfu: 从设置了过期时间的key中,删除使用次数最少的key
    • allkeys-lru: 从所有key中删除最近最少使用的key
    • volatile-lru: 从设置了过期时间的key中,删除最近最少使用的key
    • volatile-ttl: 从设置了过期时间的key中,删除快要过期的key
  • 如何淘汰:
    • 不同的淘汰策略,lru、lfu、ttl会根据采样计算淘汰值,越大越容易淘汰。并且有1个大小为16的淘汰池,会动态的替换淘汰池中的key,淘汰值越大的key在淘汰池中的位置越靠前。这样经过采用,保证能淘汰掉最适合被淘汰的数据。

相关文章:

  • 【python实用小脚本-63】每天花费2小时修复黑白照片,Python一键转换,节省90%时间(建议收藏)
  • C++(12):using声明
  • TensorFlow深度学习实战(16)——注意力机制详解
  • 医疗数据迁移质量与效率的深度研究:三维六阶框架与实践创新
  • OpenCV光流估计:原理、实现与应用
  • 【视频】解决FFmpeg将RTSP转RTMP流时,出现的卡死、出错等问题
  • OpenCV CUDA模块中矩阵操作------范数(Norm)相关函数
  • Ubuntu 编译SRS和ZLMediaKit用于视频推拉流
  • Opencv C++写中文(来自Gemini)
  • 电脑桌面便签哪个好?2025年电脑免费用的便签软件推荐
  • Maven clean 提示文件 java.io.IOException
  • nginx负载均衡及keepalive高可用
  • [IMX] 02.GPIO 寄存器
  • [IMX] 03.时钟树 - Clock Tree
  • C#中BackgroundWorker的概念与用法详解
  • 【网工】华为配置基础篇①
  • 华为数字政府与数字城市售前高级专家认证介绍
  • 【hadoop】Flume的相关介绍
  • [Linux]从零开始的STM32MP157 Busybox根文件系统测试及打包
  • [IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
  • 高新波任西安电子科技大学校长
  • 长期吃太饱,身体会发生什么变化?
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍
  • 联合国报告:全球经济前景恶化,面临高度不确定性
  • 国税总局上海市税务局通报:收到王某对刘某某及相关企业涉税问题举报,正依法依规办理
  • 证券时报:中美互降关税落地,订单集中补发港口将迎高峰期