当前位置: 首页 > 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.dtcms.com/a/191670.html

相关文章:

  • 【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是什么?区别与应用场景详解
  • java-JUC概述(进行分类总结-包含原子类、并发集合、线程等)
  • Profibus DP主站转Profinet网关接E+H流量计与西门子plc通讯
  • 【golang】DNS 资源记录(RR)接口
  • PyTorch LSTM练习案例:股票成交量趋势预测
  • uniapp微信小程序-长按按钮百度语音识别回显文字
  • R语言的专业网站top5推荐
  • 【Linux】动静态库的使用
  • 边缘计算模块
  • 专项智能练习(定义判断)_DA_02
  • idea整合maven环境配置