redis过期key的处理

在使用Redis的时候,可以设置key的过期时间,但是当key到达过期时间时,是否会被redis立即删除?答案是no。这里就涉及redis key的过期策略:定时删除和惰性删除
定期删除
 隔一段时间,随机抽取一些设置过期时间的key,检查其是否过期,如果过期就删除
惰性删除
 当客户访问数据时,如果过期就会删除

Redis同时使用定期删除和惰性删除两种策略,可以在很好的使用的cpu时间和避免浪费内存之间取得平衡,但是同时也存在一个问题,当定期删除和惰性删除无法有效的删除key时,会造成内存的巨大浪费,这就又涉及到了内存淘汰机制。

内存淘汰机制
常用的内存淘汰策略:
 • volatile-lru:最近最少使用算法,从设置过期时间的数据中将空转时间最长的key删掉
 • volatile-lfu:最近最不经常使用算法,从设置过期时间的数据中将某段时间之内使用频次最低的key删掉
 • volatile-ttl:从设置过期时间的数据中选择过期时间最早的key删掉
 • volatile-random:从设置过期时间的数据中随机删除
 • allkeys-lru: 从所有的数据中将空转时间最长的key删掉
 • allkeys-lfu:从所有的数据中将某段时间之内使用频次最低的key删掉
 • allkeys-random:从所有的数据中随机删除
 • noeviction:不做任何处理,客户访问就删除

posted @ 2023-09-13 19:22  gengone  阅读(91)  评论(0编辑  收藏  举报