问题导读
一、Redis 的回收策略(淘汰策略)?
二、Redis 的同步机制了解吗?
三、是否使用过 Redis 集群,集群的原理是什么?
01
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 永不回收的策略。
使用策略规则:
- 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问 频率低,则使 用 allkeys-lr
- 如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用 allkeys-random
分享朋友圈,每天进步一点点
02
Redis 的同步机制了解吗?
正经回答:
Redis 可以使用主从同步,从从同步。
第一次同步时,主节点做一次 bgsave,并同时将后续修改操作记录到内存 buffer,待完成后将 rdb 文件全量同步到复制节点,复制节点接受完成后将 rdb 镜像加载到内存。
加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。
03
是否使用过 Redis 集群,集群的原理是什么?
正经回答:
Redis Sentinal 着眼于高可用,在 master 宕机时会自动将 slave 提升 为 master,继续提供服务。
Redis Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行分片存储。
- End -