Redis 面试题


面试官: redis 有哪几种数据类型?

redis 数据类型

redis 有五种数据类型, 分别是 String,List,Hash,Sorted Set,Set。

面试官: 刚才你提到了 redis 的五种数据类型 List,Hash, SortedSet,Set 底层分别是什么数据结构?

他们底层分别是 -------------------------- 多种数据结构-----在----条件下会切换

sorted set 是有序集合,有序集合的实现可以是 ziplist 或者是 skiplist 跳表。 有序集合的编码转换条件与 hash 和 list 有些不同, 当有序集合中元素数量小于 128 个并且所有元素长度都小于 64 字节时会使用 ziplist,否则会转换成 skiplist。

整数数组和压缩列表在查找时间复杂度方面并没有很大的优势,那为什么Redis还会把它们作为底层数据结构呢?

整数数组和压缩列表是紧凑的数据结构,内存利用率较高。 在顺序访问的时候,对CPU缓存友好。 超过阈值??------------------------

面试官: 项目中哪里用到了 redis?


面试官:redis 如何实现高可用?

二甩:

首先 redis 有三种部署方式,主从、哨兵和集群。这三种方式都可以实现高可用。

主从通过读写分离实现了高可用,缺陷是主节点宕机,服务就不可用了。 哨兵解决了主节点宕机,服务不可用的问题。它会从其它的从节点中选主。 选主的规则是 -----------------------------。哨兵自身的单机隐患,通过引入多个哨兵节点解决。 哨兵节点通过 redis 的发布订阅功能互相发现。这个 topic 里面有上线下线等消息。

集群模式是通过分片加主从实现高可用的。

面试官:redis 主从如何同步?

redis 主从是通过 redis 通信协议,slaveof --------------------

面试官: redis 的哈希表如何扩容?

redis 中有两个空间 哈希表 1, 哈希表2

首先---------