Redis中key过期策略
key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个过期字典中
过期字典保存了数据库中所有 key 的过期时间
惰性删除策略
不主动删除每次访问时,才会检查 key 是否过期
策略只会使用很少的系统资源,但是造成了一定的内存空间浪费。
定期删除策略
每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查,并删除其中的过期key
减少了过期键对空间的无效占用,耗费了CPU性能。
持久化对过期数据的处理
RDB把当前数据生成快照保存在硬盘上
生成阶段
从内存状态持久化成 RDB(文件)的时候,会对 key 进行过期检查,过期的键「不会」被保存到新的 RDB 文件中。
恢复阶段
主服务器:过期键不会被载入到数据库中
从服务器:过期键会被载入到数据库中
AOF记录每次对数据的操作到硬盘上
写入阶段
过期键还没被删除,那么 AOF 文件会保留此过期键
过期键被删除后,Redis 会向 AOF 文件追加一条 DEL 命令来显式地删除该键值
重写阶段
从库不会进行过期扫描,从库对过期的处理是被动的。
主库在 key 到期时, AOF 文件里增加一条 del 指令,同步到所有的从库,从库通过执行这条 del 指令来删除过期的 key。