Redis相关面试题
此题是xx位面试题
(1)Redis Cluster,在一个请求过来的时候,数据分布在哪个节点, 使用的是有哪些算法?
redis cluster 用不同的算法,就决定了数据如何分布到这些节点上去。
- hash算法
- 一致性hash算法
- hash slot算法
(2)Redis为什么是高性能的?
- 基于内存的实现
- 高效的数据结构
-
合适的线程模型( I/O多路复用模型, 单线程模型)
-
合理的数据编码(String,List,Hash,Set,Zset)
(3)Redis 为什么单线程还能这么快?
通常来讲,单线程处理能力要比多线程差,那么为什么Redis使用单线程模型会达到每秒万级别的处理能力呢?可以将其归结为三点:
- 第一:纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的最重要的基础。
- 第二:非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间
- 第三:单线程避免了线程切换和竞态产生的消耗。