定期删除实现
每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查,并删除其中的过期key。
Redis 的定期删除的流程:<br><br>1、从过期字典中随机抽取 20 个 key;<br>2、检查这 20 个 key 是否过期,并删除已过期的 key;<br>3、如果本轮检查的已过期 key 的数量,超过 5 个(20/4),也就是「已过期 key 的数量」占比「随机抽取 key 的数量」大于 25%,则继续重复步骤 1;如果已过期的 key 比例小于 25%,则停止继续删除过期 key,然后等待下一轮再检查。
定期删除是一个循环的流程,为了保证定期删除不会出现循环过度,导致卡死,为此增加了定期删除循环流程的时间上限,默认不会超过 25 ms