Redis中key过期的删除机制是什么

Redis中key过期策略

key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个过期字典

过期字典保存了数据库中所有 key 的过期时间

惰性删除策略

不主动删除每次访问时,才会检查 key 是否过期

策略只会使用很少的系统资源,但是造成了一定的内存空间浪费。

定期删除策略

每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查,并删除其中的过期key

减少了过期键对空间的无效占用,耗费了CPU性能。

持久化对过期数据的处理

RDB把当前数据生成快照保存在硬盘上

生成阶段

从内存状态持久化成 RDB(文件)的时候,会对 key 进行过期检查,过期的键「不会」被保存到新的 RDB 文件中。

恢复阶段

主服务器:过期键不会被载入到数据库中

从服务器:过期键会被载入到数据库中


AOF记录每次对数据的操作到硬盘上

写入阶段

过期键还没被删除,那么 AOF 文件会保留此过期键

过期键被删除后,Redis 会向 AOF 文件追加一条 DEL 命令来显式地删除该键值

重写阶段

从库不会进行过期扫描,从库对过期的处理是被动的。

主库在 key 到期时, AOF 文件里增加一条 del 指令,同步到所有的从库,从库通过执行这条 del 指令来删除过期的 key。

你可能感兴趣的:(#,Redis,redis,缓存,数据库)