Redis的集群(三主三从)

引子
主从复制以及哨兵,他们可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多master-slave成为集群。
使用redis-cluster: 他可以支撑多个master-slave,支持海量数据,实现高可用与高并发。
哨兵模式其实也是一种集群,他能够提高读请求的并发,但是容错方面可能会有一些问题, 比如master同步数据给slave的时候,这其实是异步复制吧,这个时候master挂了,那么slave.上的数据就没有master新,数据同步需要时间的,1-2秒的数据会丢失。master恢复 并转换成slave后,新数据则丢失。
特点:

  • 1.每个节点知道彼此之间的关系,也会知道自己的角色,当然他们也会知道自己存在与-个集群环境中,他们彼此之间可以交互和通信,比如ping pong。那么这些关系都会保存到某个配置文件中,每个节点都有,这个我们在搭建的时候会做配置的。
  • 2.客户端要和集群建立连接的话,只需要和其中一个建立关系就行。
  • 3.某个节点挂了,也是通过超过半数的节点来进行的检测,客观下线后主从切换,和我们之前在哨兵模式中提到的是一个道理。
  • 4 . Redis中存在很多的插槽,可以称之为槽节点吁存储数据,这个先不管,后面再说。
    集群容错
    构建Redis集群,需要至少3个节点作为master,以此组成一个高可用的集群,此外每个master都需要配备1个slave, 所以整个集群需要6个节点,这也是最经典的Redis集群,也可以称之为三主三从,容错性更佳。所以在搭建的时候需要有6台虚拟机。
    集群也可以在单服务器构建,称之为伪集群,但是生产环境肯定是真的,所以建议用6台(最少是6台,少了不行)

6个节点的配置文件:(不能有主从的配置:replicaof 需要注释掉,并且所有的Redis必须是空的,把RDB和AOF文件也删除掉,如果默认端口是6379,则需要开启16379端口,不然就会一直卡在:等待节点加入

# 开启集群模式
cluster-enabled yes
# 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行
cluster-config-file nodes-201.conf
# 超时时间,超时则认为master宕机,随后主备切换
cluster-node-timeout 5000
# 开启AOF
appendonly yes

如果报错:
Not all 16384 slots are covered by nodes:这个错误也是没有吧Redis数据或者RDB,AOF文件清理干净

所有的节点都启动后开始构建集群,如果是老版本的Redis比如3.X,需要使用redis-trib.rb来构建集群,我使用的5.X,使用命令构建:

# 在任意一台节点输入命令
# -a imooc是密码,后边的1:标识,主从比例是1,(三主三从)
redis-cli -a imooc  --cluster create 192.168.3.70:6379 192.168.3.80:6379 192.168.3.81:6379 192.168.3.82:6379 192.168.3.80:6380 192.168.3.81:6380  --cluster-replicas 1

查看集群的状态

redis-cli -a imooc --cluster check 192.168.3.70:6379

在这里插入图片描述
redis集群是槽的概念,数据是存在槽中,槽是平均分配,这个槽是在mater中有,从节点是没有的
在这里插入图片描述存数据是对key求hash然后对槽数取模,得到具体的槽值,然后在存入
在这里插入图片描述
命令登陆集群模式的Redis

# -c:就是登陆集群模式
# -a imooc :密码
# -h -p :IP,端口
redis-cli -c -a imooc -h 192.168.3.70 -p 6379

登陆Redis后:查看master和slave信息

cluster info
# 节点信息
cluster nodes

springboot连接Redis集群的配置

spring:
  datasource:                                           # 数据源的相关配置
#    type: com.zaxxer.hikari.HikariDataSource          # 数据源类型:HikariCP
#    driver-class-name: com.mysql.jdbc.Driver          # mysql驱动
    url: jdbc:mysql://localhost:3306/test-db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    username: root
    password: 111111
  redis:
    # 集群模式(三主三从)
    password: testaaaa
    cluster:
      nodes: 
      # 节点的IP和端口
      192.168.3.70:6379,192.168.3.80:6379,192.168.3.81:6379,192.168.3.82:6379,192.168.3.80:6380,192.168.3.81:6380
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis集群中,三主三从架构是一种常见的搭建方式。每个节点都可以相互连通,客户端可以连接任何一个节点来访问整个集群中的数据和执行操作。三个主节点提供服务,而三个从节点则提供备份功能,存储集群中所有主节点和从节点的信息。 在搭建这种集群时,不需要修改端口配置,因为每个节点都在不同的机器上,这样才能实现真正的高可用性。如果在同一台机器上搭建集群,那就是伪集群了。 使用哨兵模式搭建三主三从的Redis集群有一些优点和缺点。优点包括:主从节点的自动切换使得系统更加健壮,可用性更高。缺点则在于Redis较难支持在线扩容,特别是在集群容量达到上限时,进行在线扩容会变得非常复杂。这时候,集群模式可能是一个更好的选择。 综上所述,使用三主三从架构搭建Redis集群可以提供高可用性和数据备份功能,但在线扩容可能存在一定的挑战。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis三主三集群搭建(三台机器)](https://blog.csdn.net/weixin_44519124/article/details/113274037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis搭建集群三主三集群模式](https://blog.csdn.net/xiefazhi123/article/details/119147657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值