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
#Redis#