Redis的删除策略是指在设置了过期时间的键上,在某种条件之下触发的自动删除过期的键。删除策略有两种:
第一种是定时删除策略:也就是设置了过期时间的键当已经到过期时间的时候,定时器立即删除该键,无论CPU负载有多大。 (以时间换空间)
第二种是懒汉式删除策略:也就是在访问该键时,我们才去判断该键是否过期,若过期则直接删除。 (以空间换时间)
第三种是定期删除策略(定时任务方式):也就是定期的从redis所有键中随机的抽取一部分设置了过期时间的键,然后将这些键当中已经过期了的删除。该策略当中的抽取频率可以根据业务需求修改hz配置参数,默认情况下该参数值是10,表示每秒钟抽取10次。
定期删除的流程:
第一步:从设置了过期时间的键中随机抽取20个
第二步:删除里面已经过期了的键
第三步:判断这些键中过期键所占比例,若过期键大于25%,则重复第一个步骤。
同时为了保证不会出现循环过度的情况,导致线程卡死,算法还设置了循环时间上限,默认不会超过25ms。