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 采用的是 定期删除+惰性删除

相关推荐
落落落sss14 分钟前
MQ集群
java·服务器·开发语言·后端·elasticsearch·adb·ruby
我救我自己14 分钟前
UE5运行时创建slate窗口
java·服务器·ue5
精进攻城狮@32 分钟前
Redis(value的数据类型)
数据库·redis
2401_8532757334 分钟前
ArrayList 源码分析
java·开发语言
爪哇学长39 分钟前
SQL 注入详解:原理、危害与防范措施
xml·java·数据库·sql·oracle
MoFe11 小时前
【.net core】【sqlsugar】字符串拼接+内容去重
java·开发语言·.netcore
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
mybatisPlus打印sql配置
数据库·sql
_江南一点雨1 小时前
SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍
java·spring boot·后端
弗拉唐1 小时前
将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
数据库·excel
深情废杨杨1 小时前
后端-实现excel的导出功能(超详细讲解)
java·spring boot·excel