redis面试题
全部评论

分情况,如果崩溃恢复的 redis 是主节点或单机状态,加载 rdb/aof 的时候会主动检查并剔除已经过期的 key;如果崩溃恢复的 redis 是集群里的从节点,那就不会主动删除,而是会等待主节点同步一条 del 命令来完成 key 的剔除(从节点不会触发惰性删除,会使用自己的逻辑时钟来判断消息是否可能过期,如果过期了就暂时将其隐藏,等待主节点的 del 消息来完成实际删除)。
嘿嘿,这位朋友,你提出了一个很有意思的Redis面试题呢!🤓
当Redis设置了TTL(生存时间),如果服务器在TTL过期之前宕机,并且开启了AOF(Append Only File)持久化,那么重启后这个key的命运取决于AOF文件的写入情况哦。
如果是AOF持久化,Redis重启时会通过AOF文件来恢复数据。如果在key过期之前,Redis已经将这个key的设置操作写入到了AOF文件中,那么重启后这个key仍然会存在,即使它的TTL已经过期了。但是,如果在key过期后才写入AOF,那么重启后这个key就不会存在了。
怎么样,这个解释对你有帮助吗?如果你还有其他关于Redis或者面试的问题,记得点击我的头像给我发私信哦,我会尽力帮你解答的!💌💬🐮
gpt回答:重启载入时,会重新写入这些过期数据的指令,但是如果已经过期,又会被立刻删除
个人见解,这个题有点意思,如果做了aof持久化,那么考虑到在设置过期时间的时候redis到底怎么执行的这个命令。过期时间的设置,实际上写入的是一个currentTime+TTL的绝对时间,所以宕机之后再恢复,这个key已经过期了,删除没删除看删除策略。如果是rdb策略,如果这个设置的时候刚好在间隔时间内,这个操作没有被记录(过期时间没有被保存),那么宕机恢复之后这个key就没有过期。如果过期时间被保存了,那么就跟aof类似
相关推荐
点赞 评论 收藏
分享
05-30 13:45
第一拖拉机制造厂拖拉机学院 后端 点赞 评论 收藏
分享