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

redis 过期键删除策略与回收策略

一 .redis 过期键的删除策略

Redis中的数据删除策略包括定:
  1. 定时时删除
  2. 惰性删除
  3. 定期删除
Redis提供了四个命令来设置过期时间(生存时间)。
  1. EXPIRE :表示将键 key 的生存时间设置为 ttl 秒。
  2. PEXPIRE :表示将键 key 的生存时间设置为 ttl 毫秒。
  3. EXPIREAT :表示将键 key 的生存时间设置为 timestamp 所指定的秒数时间戳。
  4. PEXPIREAT :表示将键 key
    的生存时间设置为 timestamp 所指定的毫秒数时间戳。
1 . 定时删除 案例 :
redisTemplate.opsForValue().set("key","value值",1000,TimeUnit.SECOND);

在这里插入图片描述

总结 :
  1. 当key设置有过期时间,且过期时间到达时,立即执行key的删除操作
  2. 优点:节约内存,到时就删除,立即释放不必要的内存占用
  3. 缺点:CPU压力较大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量
  4. 总结:用处理器性能换取存储空间(时间换空间),适用于小内存,强CPU场景
2 . 惰性删除
  1. 当key设置有过期时间,且过期时间到达时,立即执行key的删除操作
  2. 优点:节约内存,到时就删除,立即释放不必要的内存占用
  3. 缺点:CPU压力较大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量
  4. 总结:用处理器性能换取存储空间(时间换空间),适用于小内存,强CPU场景
2 . 定期删除

由redis.c/activeExpireCycle
函数实现,函数以一定的频率运行,每次运行时,都从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键。

注意:

并不是一次运行就检查所有的库,所有的键,而是随机检查一定数量的键。

定期删除函数的运行频率,在Redis2.6版本中,规定每秒运行10次,大概100ms运行一次。在Redis2.8版本后,可以通过修改配置文件redis.conf的 hz 选项来调整这个次数

。

总结 :

特点1:CPU性能占用设置有峰值,检测频度可自定义设置
特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理

对比图 :

在这里插入图片描述

二 . 回收策略

当达到最大内存限制时,Redis遵循的确切行为是使用maxmemory策略配置指令配置的。 以下策略可用:

noeviction :

noeviction:当达到内存限制时,不会保存新值。当数据库使用复制时,这适用于主数据库

allkeys-lru :

allkeys-lru:保留最近使用的密钥;删除最近最少使用的(LRU)密钥

allkeys-lfu :

allkeys-lfu:保留常用密钥;删除最不常用的(LFU)密钥

volatilelru :

volatilelru:删除最近最少使用的密钥,并将expire字段设置为true。

volatile lfu:

volatile lfu:删除过期字段设置为true的最不常用密钥。

allkeys random:

allkeys random:随机删除密钥,为添加的新数据腾出空间。

volatile random:

volatile random:随机删除过期字段设置为true的密钥。

volatile ttl:

volatile ttl:删除过期字段设置为true和剩余最短生存时间(ttl)值的键。

注意 :

使用策略规则:

1、如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率 低, 则使用 allkeyslru
2、如果数据呈现平等分布,
也就是所有的数据访问频率都相同, 则使用allkeys-random


http://www.kler.cn/a/574539.html

相关文章:

  • 2025中国AI大模型对比
  • Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践
  • 【Linux内核系列】:进入文件系统的世界
  • 激光雷达市场观察2-美国 PLI 发展脉络与核心技术解析2025.3.7
  • 安铂克科技 APPH 系列相位噪声分析仪:高性能测量的卓越之选
  • Sqlserver安全篇之_手工创建TLS用到的pfx证书文件
  • Halcon:HObject与opencv:Mat互转
  • 【目标检测】【CVPR 2025】DEIM:具有改进匹配机制的DETR以实现快速收敛
  • Scala:case class(通俗易懂版)
  • DeepSeek大模型深度解析:架构、技术与应用全景
  • Pandas实现Excel的vlookup并且在指定列后面输出
  • Hadoop项目中的问题(1)——NetworkManager 和 network 服务冲突
  • AutoGen学习笔记系列(七)Tutorial - Managing State
  • 亚信安全发布2024威胁年报和2025威胁预测
  • Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理
  • 兼容移动端ios,安卓,web端底部软键盘弹出,输入框被遮挡问题
  • C++————类和对象(一)
  • CentOS7安装 FFmpeg
  • 2024最新版python+pycharm安装与配置(mac和window都有讲)
  • 传统架构与集群架构搭建LAMP环境并部署WordPress服务