面试官: 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
首先---------