Redis过期时间怎么删除?怎么精准掌控缓存生命周期提升系统性能?

文章导读
Redis 过期时间的删除主要依赖惰性删除、定期删除和定时删除三种策略的组合。为了精准掌控缓存生命周期并提升系统性能,建议合理设置 maxmemory 淘汰策略,如 volatile-lru 或 allkeys-lru,避免内存溢出。同时,通过调整 hz 参数控制定期删除的频率,平衡 CPU 与内存占用。对于关键业务键,可手动管理过期时间,避免大量键同时过期导致缓存雪崩。结合业务场景选择合适的过期
📋 目录
  1. Redis 进阶 -Redis 对于过期键的三种清除策略
  2. redis 手动删除过期 key(redis 过期键的删除策略)
  3. redis 过期删除策略 (redis 过期机制)
  4. Redis 的数据清理策略详解
  5. FAQ
A A

Redis 过期时间的删除主要依赖惰性删除、定期删除和定时删除三种策略的组合。为了精准掌控缓存生命周期并提升系统性能,建议合理设置 maxmemory 淘汰策略,如 volatile-lru 或 allkeys-lru,避免内存溢出。同时,通过调整 hz 参数控制定期删除的频率,平衡 CPU 与内存占用。对于关键业务键,可手动管理过期时间,避免大量键同时过期导致缓存雪崩。结合业务场景选择合适的过期策略,能有效减少内存浪费并保障响应速度。

Redis 进阶 -Redis 对于过期键的三种清除策略

被动删除 当读/写一个已经过期的 key 时,会触发惰性删除策略,直接删除掉这个过期 key. 举个例子,set 一个 过期时间为 600s 的 key , 当 到了 600s 后,redis 并不会执行删除,为了性能,redis 会在你下次访问的时候 去删除。这样的话,我如果永远不访问,那不歇菜了么?不要着急,Redis 还有主动删除。主动删除 由于惰性删除策略无法保证冷数据被及时删掉,所以 Redis 会定期主动淘汰一批已过期的 key。说白了,这就是定时任务干的活,防止有些 key 一直占用内存。当 REDIS 运行在主从模式时,只有主结点才会执行被动和主动这两种过期删除策略,然后把删除操作”del key"同步到从结点。当前已用内存超过 maxmemory 限定时,触发主动清理策略 第三种策略的情况:当前已用内存超过 maxmemory 限定时,会触发主动清理策略。

redis 手动删除过期 key(redis 过期键的删除策略)

1. 常见的删除策略 常见的删除策略有以下 3 种:定时删除 在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。惰性删除 放任过期键不管,每次从键空间中获取键时,检查该键是否过期,如果过期,就删除该键,如果没有过期,就返回该键。定期删除 每隔一段时间,程序对数据库进行一次检查,删除里面的过期键,至于要删除哪些数据库的哪些过期键,则由算法决定。其中定时删除和定期删除为主动删除策略,惰性删除为被动删除策略。接下来我们一一讲解。1.1 定时删除策略 定时删除策略通过使用定时器,定时删除策略可以保证过期键尽可能快地被删除,并释放过期键占用的内存。因此,定时删除策略的优缺点如下所示:优点:对内存非常友好 缺点:对 CPU 时间非常不友好

redis 过期删除策略 (redis 过期机制)

定期删除 定期删除,顾名思义,就是每隔一段时间进行一次删除 如果删除操作执行次数过多、执行时间太长,就会导致和定时删除同样的问题:占用大量 cpu 资源去进行删除操作 如果删除操作次数太少、执行时间短,就会导致和惰性删除同样的问题:内存资源被持续占用,得不到释放。所以定时删除最关键的就在于执行时长和频率的设置 默认每秒运行 10 次会对具有过期时间的 key 进行一次扫描,但是并不会扫描全部的 key,因为这样会大大延长扫描时间。每次默认只会随机扫描 20 个 key,同时删除这 20 个 key 中已经过期的 key。如果这 20 个 key 中过期 key 的比例达超过 25%,则继续扫描。参数配置 默认每秒扫描 10 次,我们可以在 redis 的配置文件中进行更改 对于 hz 参数,官方不建议超过 100,否则会把 cpu 造成比较大的压力

Redis 的数据清理策略详解

定时清理 通过 serverCron 定期触发清理,可以通过 hz 参数,配置每秒执行多少次清理任务,流程如下 1、Redis 配置项 hz 定义了 serverCron 任务的执行周期,默认为 10,即 CPU 空闲时每秒执行 10 次 2、每次过期 Key 清理的 timelimit 不超过 CPU 时间的 25% ,即若 hz = 1,则一次清理时间最大为 250ms,若 hz = 10,则一次清理时间最大为 25ms,计算逻辑 (timelimit = 1000000*ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC/server.hz/100;) 3、清理时依次遍历所有的 db; 4、从 db 中随机取 20 个 key,判断是否过期,若过期,则逐出; 5、若有 5 个以上 key 过期,则重复步骤 4,否则遍历下一个 db; 6、在清理过程中,若达到了 timelimit 时间,退出清理过程;

Redis过期时间怎么删除?怎么精准掌控缓存生命周期提升系统性能?

FAQ

Redis 过期键删除策略主要有哪几种?

常见的删除策略有以下 3 种:定时删除、惰性删除、定期删除。其中定时删除和定期删除为主动删除策略,惰性删除为被动删除策略。

当 Redis 内存超过 maxmemory 限定时会触发什么策略?

当前已用内存超过 maxmemory 限定时,会触发主动清理策略。我们需要根据自身业务类型,选好 maxmemory-policy(最大内存淘汰策略),设置好过期时间。