点击上方“助力小白闯IT”,关注公众号
面试刷题,查漏补缺
本文目录
1、Redis过期键的删除策略
2、Redis的回收策略(淘汰策略)
3、Redis内存用完了会发生什么
1、Redis过期键的删除策略
定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即支持对键的删除操作。
惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话就删除该键
定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定
2、Redis的回收策略(淘汰策略)
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集中挑选要过期的数据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
allkeys-lru:从数据集中淘选最近最少使用的数据淘汰
allkeys-random:从数据集中任意选择数据淘汰
no-enviction:禁止驱逐数据
-------------------------
记法:
volatile和allkeys分别表示的是从已设置过期时间和所有数据;
lru表示最近最少使用,ttl表示要过期的,random表示随机
-------------------------
使用策略规则:
1)如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru
2)如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random
3、Redis内存用完了会发生什么
如果内存达到设置的上线,Redis的写命令会返回错误信息(但是读命令还可以正常返回),或者可以将Redis当缓存来使用配置淘汰策略