大家好,我是锋哥。今天分享关于 Redis 的回收策略(淘汰策略)面试题,希望对大家有帮助;
volatile-lru :从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl :从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random :从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru :从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random :从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐) :禁止驱逐数据
注意这里的 6 种机制,volatile 和 allkeys 规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的 lru、ttl 以及 random 是三种不同的淘汰策略,再加上一种 no-enviction永不回收的策略。
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网
使用策略规则:
1、如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用 allkeys-lru
2、如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random