Redis-数据过期策略

文章目录

更多相关内容可查看

Redis数据持久化策略的作用是什么?

Redis数据过期策略是指在Redis中设置数据的过期时间,并在数据过期时自动从数据库中删除该数据的一种机制。这种机制的作用主要体现在以下几个方面:

  • 缓存管理:Redis经常被用作缓存系统,用于存储频繁访问但不常变化的数据,如页面缓存、会话数据等。通过设置数据过期时间,可以自动清理过期的缓存数据,避免缓存数据占用过多内存空间,保持系统的性能稳定。
  • 节省内存空间:Redis是一个内存数据库,内存资源有限。通过设置数据的过期时间,可以自动释放过期的数据占用的内存空间,保证内存资源的有效利用。
  • 防止数据过期:在一些场景中,数据可能会因为不再被访问而过期,但在过期前又被重新访问到。为了避免这种情况,Redis提供了惰性删除和定期删除两种过期策略。惰性删除会在获取数据时检查数据是否过期,定期删除则是通过定时任务扫描数据库,删除过期数据。这样可以保证数据在被访问时不会过期。
  • 控制数据生命周期:通过设置数据的过期时间,可以控制数据的生命周期,使数据在一定时间内有效,从而管理数据的时效性和有效性。
  • 降低系统复杂度:使用数据过期策略可以简化系统逻辑,避免手动管理数据的过期与清理,减少开发和维护成本。

Redis的数据过期策略有哪些?

惰性删除

惰性删除 :只会在取出 key 的时候才对数据进行过期检查。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。

数据到达过期时间,不做处理。等下次访问该数据时,我们需要判断

如果未过期,返回数据

发现已过期,删除,返回nil

定期删除

定期删除 : 每隔一段时间抽取一批 key 执行删除过期 key 操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。

默认情况下 Redis 定期检查的频率是每秒扫描 10 次,用于定期清除过期键。当然此值还可以通过配置文件进行设置,在 redis.conf 中修改配置"hz"即可,默认的值为hz 10

定期删除的扫描并不是遍历所有的键值对,这样的话比较费时且太消耗系统资源。Redis 服务器采用的是随机抽取形式,每次从过期字典中,取出 20 个键进行过期检测,过期字典中存储的是所有设置了过期时间的键值对。如果这批随机检查的数据中有 25% 的比例过期,那么会再抽取 20 个随机键值进行检测和删除,并且会循环执行这个流程,直到抽取的这批数据中过期键值小于 25%,此次检测才算完成

Redis 服务器为了保证过期删除策略不会导致线程卡死,会给过期扫描增加了最大执行时间为 25ms
注:定期删除对内存更加友好,惰性删除对 CPU 更加友好。两者各有千秋,所以 Redis 采用的是 定期删除+惰性删除

相关推荐
辛一一2 小时前
neo4j图数据库基本概念和向量使用
数据库·neo4j
熊大如如3 小时前
Java 反射
java·开发语言
巨龙之路3 小时前
什么是时序数据库?
数据库·时序数据库
蔡蓝3 小时前
binlog日志以及MySQL的数据同步
数据库·mysql
猿来入此小猿3 小时前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
goTsHgo4 小时前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder4 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
是店小二呀4 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
pjx9874 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
炒空心菜菜4 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark