Redis面试问题总结

Redis的主从复制、哨兵模式以及集群

参考:https://blog.csdn.net/smilehappiness/article/details/107433525
主从复制
主从复制模式由一个master和多个slave构成,通过在redis.conf配置文件进行配置来实现主从关系
当主redis(master )宕机,写请求将无法执行((error) ERR wrong number of arguments for ‘set’ command)
当从redis(slave)宕机,读请求的处理性能下降
redis的master节点可用于写数据,slave从服务节点只能用于读取数据,向slave写数据会导致错误
master/slave主从同步数据的过程本身是异步的,保证启用主从复制后,master的性能不会受到影响。
当master发生故障,需手动将其中一台slave使用slaveof no one命令提升为master,其它slave执行slaveof命令指向这个新的master,从而构成新的主从关系
主从复制模式的故障转移需要手动操作,这种处理方式并不智能,要实现自动化处理,这就需要Sentinel哨兵,实现故障自动转移

哨兵模式
Sentinel哨兵用来监视Redis的主从服务器,它会不断检查Master和Slave是否正常。
哨兵是自动实现故障转移,不需要人工干预,是一种高可用的集群方案。
sentinel节点会定期向master节点发送心跳包来判断redis如无master节点的存活状态,一旦master节点没有正确响应,sentinel会把master设置为“主观不可用状态”,然后它会把“主观不可用”发送给其他所有的sentinel节点去确认,当确认的sentinel节点数 > quorum(这个投票数就是上边哨兵里面配置的数量)时,即多个sentinel确认的节点数大于过半的投票数据,则会认为master是“客观不可用”。

集群
集群模式出现的原因:
哨兵模式中Redis集群的总数据存储量受限于可用存储内存最小的节点,形成了木桶效应。
客户端分片维护成本较高、增加、移除节点比较繁琐。

集群模式提供了数据分片存储的支持,以及在主Redis数据库故障后自动故障转移恢复的支持。
Redis cluster的每个节点组都有两种角色可选:主节点(master node)、从节点(slave node)其中主节点用于存储数据,从节点用于备份主节点的数据。
Redis cluster有16384个哈希槽slot(编号在 0-16383 之间),每个redis的key通过CRC16函数后,对16384取模来决定将key放置哪个哈希槽,集群的每个节点组负责一部分哈希槽。
集群模式很容易添加或者删除节点,可以实现线上动态扩容
参考:
https://blog.csdn.net/smilehappiness/article/details/107433525

猜你喜欢

转载自blog.csdn.net/weixin_43260719/article/details/121279507