定时删除策略
在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期期间来临时,立即执行对键的删除操作
对内存是友好的,保证过期键会尽可能快的被删除,并释放过期键所占用的内存
对cpu时间是最不友好的,过期键比较多的情况下,删除键会占用想当一部反的cpu时间,无疑会对服务器的响应时间和吞吐量造成影响
惰性删除策略
程序只会在取出键时才对键进行过期检查
对cpu时间来说是最友好的,可以保证过期键的删除操作只会在非做不可的情况下进行,并且删除目标仅限于当前处理的键
对内存最不友好,如果一个键已经过期,而这个键又仍在然保留在数据库中,只要过期键不被删除,占用的内存就不会被释放
定期删除策略
每隔一段时间执行一次删除过期键的操作,通过限制删除操作执行时长和频率来减少删除操作对cpu时间的影响,是对定时删除策略和惰性删除策略的整合和折中
难点是确定删除操作执行的时长和频率,如果删除太频繁或者执行时间过长,就会退化为定时删除策略,如果删除操作执行的太少或者执行时间太短,又会退化为惰性删除策略,出现内存浪费的情况
expires字典会保存所有设置了过期时间的key的过期时间数据,其中,key是指向空间中的某个键的指针,value是该键的毫秒精度的UNIX时间戳表示,键空间是指该Redis集群中保存的所有键
Redis中同时使用了惰性过期和定时过期两种过期策略
参考文章
redis过期键删除策略_Leopold的专栏-CSDN博客_redis的过期删除策略
膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili