Redis 过期键的删除策略

Redis过期键的删除策略

常见的对于过期键的删除策略有以下几种:

定时删除

在设置每个键的时候,设置一个timer,到期就删除该键

  • 优点:对内存有效,及时删除过期键
  • 缺点:对cpu不友好,当过期键多的时候,删除过期键这一行为会占用很多cpu

惰性删除

只在读取键时,对过期时间进行判断,如果过期就删除,不过期就返回该键。

  • 优点: 对CPU友好
  • 缺点:对内存不友好,对于过期的键,不能及时删除,很可能造成过期键堆积。

定期删除

前两种方式的折中,每隔一段时间执行一次过期键的删除策略,通过限制删除过期键的时长和频率来减少删除操作对CPU时间的影响。

Redis中的策略

Redis中对于过期键的删除策略为惰性删除和定期删除策略的结合。

Redis如何保存过期键

在数据库的 RedisDb 结构中保存了一个名为 expires的字典,字典的键为指向某个键对象,字典的值为一个毫秒级的 unix 时间戳。

RDB、AOF对过期键的处理

  1. 生产RDB文件时,跳过过期键,载入RDB文件时,主服务器跳过过期键,从服务器载入(难以理解)。
  2. AOF重写时,跳过过期键,AOF写入时(服务器以AOF持久化模式运行),对过期键不做处理,

本文章总结于黄健宏老师的《Redis设计与实现》

上一篇:VMWare Centos7虚拟机安装并运行Redis


下一篇:Redis数据持久化实践