我们都知道redis中的key是可以设置过期时间的,那到了过期时间redis是怎么处理这些key的呢?
首先我们先了解下过期时间是如何存储的....一. key过期时间存储
通过server.h可见,key的过期时间和key本身的信息是分别使用expires和dict两个不同字典存储的.当用户需要判断过期时间时,只需要在过期时间的字典中查找即可....惰性删除
当客户端发送命令请求时,服务端会先通过expireIfNeeded()方法,进行判断key是否过期,如果key过期就进行删除,然后在进行后续命令操作.
2....定期删除
每隔一段时间,程序就对数据库进行一次检查,删除里面的部分过期Key.
为什么是删除「部分」过期键呢?...hz等于10时,则一次清理时间最大为1s/10*25%=25ms.
(3) 依次遍历每个库中执行过期Key清理.
(4) 从一个库中随机抽取20个key,判断是否过期,若过期,则删除过期key.