缓存的过期策略

我们日常开发中经常会用到缓存,有redis的,Memcached的。我们经常会设置缓存的过期时间。但是缓存的过期策略到底是怎样的呢,设置了时间以后,为什么时间到了,就认为这个缓存是失效了。
首先我们来说一下redis的缓存过期策略,redis有2种缓存过期策略。一种是消极的,一种是积极的。
消极策略:每次去获取key的时候,判断一下这个key的过期时间是什么,如果已经过期了,就删除掉。
积极策略:如果只用消极策略,就会导致不常用的key一直存在,无法删除。所以有一个积极策略,使用redis的时间事件,间隔一段时间就去检查并删除失效主键,从中尝试着随机抽样 REDIS_EXPIRELOOKUPS_PER_CRON(默认值为10)个设置了失效时间的主键,检查它们是否已经失效,如果失效就删除,如果失效的主键个数占本次抽样个数的比例超过25%,Redis 会认为当前数据库中的失效主键依然很多,会重复上述步骤,直到刚才的比例低于25%才停止对当前数据库的处理,转向下一个数据库。这里不会一直处理下去,最多只处理 REDIS_DBCRON_DBS_PER_CALL(默认值为16)次,并且只能持续一定的时间,避免删除失效主键占用过多的CPU资源。

你可能感兴趣的:(缓存的过期策略)