首页天道酬勤redis数据更新策略,redis的key过期后没有删除

redis数据更新策略,redis的key过期后没有删除

张世龙 05-05 16:51 111次浏览

Redis中数据库密钥的过期日期存储在过期词典中。 如果一个密钥过期,则Redis有三种不同的删除策略:调度删除、惯性删除和定期删除

定时删除

定义

在设置密钥过期时间的同时创建计时器,以便在计时器到达密钥过期时间时立即执行密钥删除操作。

计划删除策略最适合内存。 使用计时器时,计划删除策略会尽快删除过期密钥,并释放过期密钥占用的内存。

另一方面,在CPU时间里嘴巴不好。 在到期密钥较多的情况下,删除到期密钥的行为可能会占用相当大的CPU时间,内存并不紧张,但在CPU时间紧张的情况下,将CPU时间用于删除与当前任务无关的到期密钥会影响服务器的响应时间和吞吐量

惯性删除

定义

放置过期密钥,但每次从密钥空间获取密钥时检查获取的密钥是否过期,过期时删除该密钥; 如果没有过期,则返回此键。

惯性删除策略对CPU时间最友好,但对内存最不友好。 如果密钥已过期且密钥未被访问,则该密钥可能永远不会被删除。 此外,这可能是因为内存泄漏——的无用垃圾数据占用了大量内存,但服务器无法主动释放。 对于运行状态依赖内存的Redis服务器来说,情况并非如此

定期删除

定义

每隔一段时间,程序就会检查数据库并删除过期的密钥。 算法决定要删除的过期密钥的数量以及要检查的数据库数量。

从上面对计划删除和惯性删除的讨论来看,这两种删除方法在单一使用过程中存在非常明显的缺陷,定期删除策略可以视为两种策略的集成和折中。

定期删除策略每隔一段时间执行删除过期密钥操作,并限制删除操作的执行时间和频率,从而减少删除操作对CPU时间的影响。

通过定期删除过期密钥,定期删除策略有效减少了过期密钥对内存的浪费

但是,定期删除策略的难点是确定删除操作的执行时间和频率。

如果频繁执行删除操作或执行时间过长,定期删除策略会降低为计划删除策略,而CPU时间会被过多地用于删除过期密钥

如果删除操作执行得太少或执行时间太短,则定期删除策略可能会像惰性删除策略一样浪费内存

redis内存回收机制,redis存储