asp网站用什么软件,中国疫苗接种率,网店首页设计,jquery+html5 网站后台管理页面模板Redis会将每个设置了过期时间的key放入一个独立的字典中#xff0c;以后会定时遍历这个字典来删除到期的key。除了定时遍历之外#xff0c;它还会使用惰性策略来删除过期的key。所谓惰性策略就是在客户端访问这个key的时候#xff0c;Redis对key的过期时间进行检查#xff…Redis会将每个设置了过期时间的key放入一个独立的字典中以后会定时遍历这个字典来删除到期的key。除了定时遍历之外它还会使用惰性策略来删除过期的key。所谓惰性策略就是在客户端访问这个key的时候Redis对key的过期时间进行检查如果过期了就立即删除。如果说定时删除是集中处理那么惰性删除就是零散处理。
定期删除
Redis默认每秒进行10次过期扫描过期扫描不会遍历过期字典中所有的key而是采用了一种简单的贪心策略步骤如下
从过期字典中随机选出20个key删除这20个key中已经过期的key如果过期的key的比例超过1/4那就重复步骤1
同时为了保证过期扫描不会出现循环过度导致线程卡死的现象算法还增加了扫描时间的上限默认不会超过25ms。
惰性删除
在获取key时先判断key是否过期如果过期则删除。这种方式存在一个缺点如果这个key一直未被使用那么它一直在内存中其实它已经过期了会浪费大量的空间。
这两种策略结合起来以后定时删除策略发生了一些改变不再是每次扫描全部的key了而是随机抽取一部分key进行检查这样就降低了对CPU资源的损耗惰性删除策略互补了为检查到的key