首页 > Redis常见面试题(一)
头像
小谢backup
编辑于 2021-03-11 20:27
+ 关注

Redis常见面试题(一)

1、Redis 的持久化机制有哪些?

RDB(默认) 和 AOF 机制

2、Redis主从复制用什么拓扑结构?

单向链表结构,即:
Master <- Slave1 <- Slave2 <- Slave3…
这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

3、Redis的回收策略有哪些?

1.  volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
2.  volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
3.  volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
4.  allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
5.  allkeys-random:从数据集中任意选择数据淘汰
6.  no-enviction:禁止驱逐数据


4、如何选择Redis的回收策略?

如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用 lru;
如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用 random

5、Redis的内存用完了会发生什么?

如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回)。
解决思路:配置内存淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。


6、Redis有哪些数据结构?

String、Hash、List、Set、SortedSet。

如果你是Redis中高级用户,还需要加上下面几种数据结构:HyperLogLog、Geo、Pub/Sub。
如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。

7、Pipeline有什么好处?为什么要用pipeline?

可以将多次IO往返的时间缩减为一次,前提是pipeline执行的指令之间没有因果相关性。
Pipeline可以提高Redis的QPS峰值。

8、Redis 两种集群方案的区别?

Redis Sentinal:着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
Redis Cluster:着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。

9、Redis持久化数据和缓存怎么做扩容?

如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。
如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。

10、如果有大量的key需要设置同一时间过期,一般需要注意什么?

如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。
一般需要在时间上加一个随机值,使得过期时间分散一些。


内容来自公众号:小谢backup

全部评论

(0) 回帖
加载中...
话题 回帖