当前位置: 首页 > 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在淘汰池中的位置越靠前。这样经过采用,保证能淘汰掉最适合被淘汰的数据。
http://www.xdnf.cn/news/467317.html

相关文章:

  • PDA手持终端应用有哪些?
  • Python生成器:高效处理大数据的秘密武器
  • YOLO11解决方案之距离计算探索
  • RHCE实验:通过脚本判断用户是否存在
  • 与entity物体的交互
  • 提升MySQL运维效率的AI利器:NineData深度评测与使用指南
  • 网页渲染的两条赛道
  • 语音识别——语音转文字
  • 20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
  • Spring Boot 拦截器:解锁5大实用场景
  • QImage高效率像素操作的方法
  • 基于windows环境Oracle主备切换之后OGG同步进程恢复
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 嵌软面试每日一阅----通信协议篇(二)之TCP
  • 一招解决Tailwindcss4.x与其他库样式冲突问题
  • 报销单业务笔记
  • 中国近代史2
  • 深度学习框架对比---Pytorch和TensorFlow
  • MySQL 学习(十)执行一条查询语句的内部执行过程、MySQL分层
  • 验证可行分享-Rancher部署文档
  • CSRF攻击 + 观测iframe加载时间利用时间响应差异侧信道攻击 -- reelfreaks DefCamp 2024
  • 第一天的尝试
  • C语言中的指定初始化器
  • java 八股
  • Opencv C++写中文(来自Gemini)
  • uniapp+vite+cli模板引入tailwindcss
  • 智慧鱼塘可视化管理:养殖业数字孪生
  • [IMX] 02.GPIO 寄存器
  • Electron 应用的升级机制详解
  • 文科生如何重新开始学习数学?