对于过期键的判定:

1)检查给定键是否存在于过期字典:如果存在,那么获取键的过期时间。

2)检查当前的UNIX时间戳是否大于键的过期时间:如果是,那么键已过期;否则的话,键为过期。

Redis使用的是惰性删除和定期删除两种策略。

1. 惰性删除

惰性删除是所有的读写Redis的命令在执行前都会对输入键进行检查:

  • 如果输入键已经过期,那么将输入键从数据库删除。
  • 如果输入键未过期,那么执行实际的命令。

2. 定期删除

定期删除策略每隔一段时间执行一次删除过期键操作,通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响,还有效减少了因为过期键而带来的内存浪费。

具体实现:在规定的时间内,分多次遍历服务器的各个数据库,从一定量的数据库中取出一定量的随机键进行检查,并删除过期键。