为了提高查询效率,会使用读写分离的方案。主库负责写操作,从库负责读取操作并且为只读属性。使用一主两从的拓扑关系讲述redis的读写分离方案,如图:

redis复制
redis的读写分离基于redis的复制机制实现,环境搭建的过程可以参考这位网友的介绍Redis集群主从复制(一主两从)搭建配置教程【Windows环境】。该机制存在读写分离的使用场景下有如下隐患:
- 复制数据有延迟
master采用异步复制的方式把数据复制到slave从库。master生成RDB压缩镜像文件,然后发送给slave节点;slave节点成功接收RDB文件后,清理当前节点的数据,然后执行RDB文件录入数据;slave节点如果开启了AOF持久化方式,会生成AOF文件,如果文件比较大的话甚至会对AOF文件执行重写操作。所以,从库数据与主库数据不一致的情景。
- 节点故障
master节点故障,写操作无法执行,这时需要人工介入手动切换master节点,从从节点中选择一个节点作为新的master节点。slave节点故障,连接到该节点的查询操作无法执行。当出现这两种节点故障时,客户端应用程序没有得到通知,就无法继续正常工作。
redis sentinel哨兵模式
redis使用Redis Sentinel哨兵模式实现了redis的高可用方案,环境搭建过程可以参考这位网友的介绍Redis哨兵(Sentinel)模式。一主二从的拓扑关系图如下:

该模式的主要功能如下:
- 监控
每个Sentinel节点,都会监控所有redis数据节点,特别是master节点的监控,如果redis数据节点故障,就会sentinel集合就会马上进行故障转移。客户端应用程序是通过sentinel集合中的单个sentinel节点获取redis master主节点的配置配置信息。所以,sentinel节点也会监控Sentinel集合中其余的Sent

本文探讨了Redis的读写分离策略,包括一主两从的拓扑结构及其实现机制,阐述了其可能存在的数据延迟和节点故障问题。介绍了Redis Sentinel哨兵模式在监控、故障转移和消息通知方面的应用,以及Redis Cluster集群模式如何解决单机瓶颈,实现数据分区和负载均衡。
最低0.47元/天 解锁文章
4238

被折叠的 条评论
为什么被折叠?



