Redis-Cluster集群模式
前言: 虽然说哨兵模式解决了为用户持续提供写服务的问题,但是哨兵模式毕竟只有一个主节点master,当请求数量比较大的时候,哨兵模式单节点master可能依然无法承载写的压力,那么Redis-Cluster集群模式就可以很好的解决这个问题。
集群特点:
- 由多个Redis服务器组成的分布式网络服务集群;
- 集群之中有多个Master主节点,每一个主节点都可读可写;
- 节点之间会互相通信,两两相连;
- Redis集群无中心节点。
故障转移:
集群进行故障转移的方法和哨兵模式进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Sentinel。
槽节点:
redis-cluster集群数据会存储在槽节点上,一共16384个槽节点slot,会分布在各个主节点之上。
集群配置
编辑核心配置文件 redis.conf
################################ REDIS CLUSTER ###############################
# 开启cluster集群模式
cluster-enabled yes
#集群节点配置文件,用于存放当前节点信息
cluster-config-file nodes-6379.conf
#准备切换的超时时间
cluster-node-timeout 15000
#开启aof持久化机制
appendonly yes
配置完成之后重启redis服务,同时删除.rdb和.aof文件
然后将上面的配置文件在其他三台服务器进行配置,同样的配置好再重启;
redis-cli -a yjg --cluster
create 192.168.181.128:6379
192.168.181.130:6379
192.168.181.131:6379
192.168.181.132:6379
192.168.181.133:6379
192.168.181.134:6379
--cluster-replicas 1
-a yjg:redis数据库密码;
–cluster-replicas 1 : 主从数据库比例
出现信息确认信息如下:
进度条走完之后进行集群查看:redis-cli -a yjg --cluster check 192.168.181.128:6379
插入数据测试:
进入客户端:redis-cli -c -a yjg -h 192.168.181.128 -p 6379
可见,cluster集群模式插入数据是往槽节点在插入,而且分布在不同的主数据库节点,如果再128主节点查看key则只能看到在128节点存放的key值,但是可以在128操作读取其他主节点存储的key值,例如:
集群会自动根据key值切换服务器节点进行读取。
到此集群搭建完毕,下面给大家贴上SpringBoot项目该如何配置cluster集群
集群模式不需要指定数据库名database,因为是存储在槽节点。
redis:
password: yjg
cluster:
nodes: 192.168.181.128:6379,192.168.181.130:6379,192.168.181.131:6379,192.168.181.132:6379,192.168.181.133:6379,192.168.181.134:6379
大功告成!
【Redis-Series】:
一、Linux生产环境安装部署Redis
二、Redis的两种持久化机制RDB/AOF
三、Redis的主从复制原理以及实现(图文详解)
四、Redis哨兵模式讲解及SpringBoot配置(图文详解)
六、Redis击穿、穿透、雪崩讲解以及解决方案