Redis常见面试题(五)
目录
1、Redis中的管道有什么用?
2、Redis有哪些高可用方案?
3、Redis集群的目的是什么?
4、Redis集群如何选择数据库?
5、Redis集群怎么保证高可用?
6、Redis集群最少需要几个主节点?
7、Redis集群主从复制的原理是?
8、Redis集群是怎么做数据分片的?
9、Redis集群会不会出现写丢失?
10、Redis可以保证数据强一致性吗?
1、Redis中的管道有什么用?
Redis中的管道技术是指: Redis Pipelining,用于提高Redis服务的性能。
管道技术可以在服务端还未响应时,客户端仍然可以继续向服务端发送请求,即客户端可以发送多个命令到服务端,而不用等待服务器的响应,客户端会在最后再一次性读取所有服务端的响应。
2、Redis有哪些高可用方案?
1. Redis主从复制;
2. Redis Sentinel (哨兵) ;
3. Redis Cluster (集群) ;
4. Codis (第三方)
5. twemproxy (第三方)
3、Redis集群的目的是什么?
Redis集群可以将数据分割到不同的服务器节点上,当Redis集群中的部分节点宕机或不可用时,Redis 其他节点仍然能够继续处理命令,不至于整个Redis集群不可用,用来保证可用性。
4、Redis集群如何选择数据库?
Redis集群目前无法做数据库选择,默认在0号数据库。
5、Redis集群怎么保证高可用?
Redis集群使用了主从复制模型,即每个节点都可以多个复制品。
比如集群有这三个主节点:
A,B,C
如果其中一个挂了,集群就不可用了,所以现在为每个节点分配一个从节点:
A1, B1,C1
这样,如果A挂了,A1就会顶上来,集群继续正常工作。
6、Redis集群最少需要几个主节点?
Redis集群正常工作,至少需要3个主节点。
7、Redis集群主从复制的原理是?
Redis集群主从复制采用的是异步复制机制。
比如,现在有以下节点:
A-> A1, A2, A3
B-> B1, B2, B3
C-> C1,C2,C3
具体的复制流程如下:
1)客户端向主节点C写数据
2)主节点C回复该命令状态
3)主节点C再向其他从节点(C1,C2,C3) 复制数据
8、Redis集群是怎么做数据分片的?
Redis集群没有使用一致性hash算法,而是引入了哈希槽的概念。
Redis集群有16384个哈希槽,每个key 通过CRC16校验后对16384取模来决定放置哪个槽,
集群的每个节点负责一部分hash槽。
举个例子,比如当前集群有3个节点,那么:
●节点A包含0到5500号哈希槽
●节点B包含5501到11000号哈希槽
●节点C包含11001到16384号哈希槽
9、Redis集群会不会出现写丢失?
Redis集群不是强一致性,会出现丢失写操作数据的情况。
比如有以下2个场景:
1) 集群是用了异步复制,主节点成功即立即返回再同步从数据,由于网络问题从节点可能没有同步到数据;
2)集群出现了网络分区,可能导致写数据丢失;
10、Redis可以保证数据强一致性吗?
Redis集群主从复制采用的是异步复制机制,
Redis并不能保证数据的强一致性。