面试试答0501

redis的hash是怎么实现的,讲一下 refresh 过程,和 java 的 hashmap 实现有什么区别

hash 类型的内部编码有两种: ziplist 和 hashtable。

  • ziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512),同时所有值都小于hash-max-ziplist-value配置(默认64字节)时,Redis 会使用 ziplist 作为哈希的内部实现,ziplist 使用更加更加紧凑的 结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀。
  • hashtable(哈希表):当哈希类型无法满足 ziplist 的条件时,Redis 会使用hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降,而 hashtable 的读写时间复杂度为 O(1)

redis cluster,怎么做到高可用

集群模式和哨兵模式有什么区别

redis 是单线程的吗,为什么快

my:可以说是单线程的,但是例如清理过期键,包括集群通讯这些,都会新开线程。快的原因主要是避免了用户态与内核态之间的频繁切换,加之使用了IO复用技术,提升了对于IO的使用率

answer:

redis 为什么快

redis 内存模型

tcp为什么要3次握手4次挥手,2次握手会有什么问题

my:2次握手无法验证客户端的接收能力。

协程和线程的区别

分库分表,全局id怎么生成

分布式ID