第一步下载Redis3.0以上的版本,因为3.0以下的版本对集群搭建不太友好

第二步解压

第三步安装

以上教程自行百度,下文是本文的重点

进入你安装Redis的目录,复制3个reids.conf配置文件

cp ./redis.conf ./redis6379.conf
cp ./redis.conf ./redis6380.conf
cp ./redis.conf /.redis6381.conf

修改reids.conf配置文件,以redis6379.conf配置为例

自定义Redis日志文件保存位置
我的是
/Users/zhr/tools/redis/redis6379
/Users/zhr/tools/redis/redis6380
/Users/zhr/tools/redis/redis6381
在这里插入图片描述

打开文件

vim ./redis6379.conf

然后配置

#启用后台启动
daemonize yes
#pidfile位置,配置到对应的文件下面
pidfile "/Users/zhr/tools/redis/redis6379/redis6379.pid"
#端口
port 6379
#日志文件位置,配置到对应的文件下面
logfile "/Users/zhr/tools/redis/redis6379/log6379.log"
#rdb备份文件名称
dbfilename "dump6379.rdb"
#rdb备份文件路径,配置到对应的文件下面
dir "/Users/zhr/tools/redis/"

其它的俩conf文件依次按照上面的配置然后启动

./redis-server ./redis6379.conf
./redis-server ./redis6380.conf
./redis-server ./redis6381.conf

然后通过然后通过客户端连接,看一下那个可以新增数据,可以新增数据的那个是主节点

./redis-cli -p 6379
./redis-cli -p 6379
./redis-cli -p 6379

确认那个端口号连接的是主节点之后,然后在其余的从节点的conf文件下面加入这句话,然后重启所有节点

# slaveof 主节点ip 主节点端口号
slaveof 127.0.0.1 6379

重启所有节点:
方法一用客户端登录到各个节点

redis-cli -p 6379
shutdown

在这里插入图片描述

方法二打开进程管理结束所有Redis进程
在这里插入图片描述
然后再重新启动所有服务器节点

./redis-server ./redis6379.conf
./redis-server ./redis6380.conf
./redis-server ./redis6381.conf

配置哨兵

在redis.conf文件的目录中可以看到sentinel.conf,然后复制三份
在这里插入图片描述

vim sentinel-26379.conf
#Sentinel节点的端口,分别配置不同Sentinel节点端口号
port 26379
#自定义存储目录,把哨兵的日志保存到你自定义的目录中去
dir "/Users/zhr/tools/redis/sentinel"
#开启守护进程启动
daemonize yes
#日志文件名字配置成对应的日志文件名字
logfile "sentinel-26379.log"

#当前Sentinel节点监控 127.0.0.1:6379 这个主节点的端口号和ip
#2代表判断主节点失败至少需要2个Sentinel节点节点同意
#mymaster是主节点的别名
#所有的哨兵文件都配置成这样
sentinel monitor mymaster 127.0.0.1 6379 2

#每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒且没有回复,则判定不可达
#所有的哨兵文件都配置成这样
sentinel down-after-milliseconds mymaster 30000

#当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向>新的主节点发起复制操作的从节点个数为1
#所有的哨兵文件都配置成这样
sentinel leader-epoch mymaster 1

#故障转移超时时间为180000毫秒
#所有的哨兵文件都配置成这样
sentinel failover-timeout mymaster 180000

#同理创建修改sentinel-26380.conf、sentinel-26381.conf配置文件

启动哨兵

./redis-sentinel ./sentinel-26379.conf
./redis-sentinel ./sentinel-26380.conf
./redis-sentinel ./sentinel-26381.conf

服务端至此配置完毕!!!

springboot集成

特别注意在配置节点的时候,端口号是哨兵节点端口号

server:
  port: 80

spring:
  redis:
    lettuce:
      pool:
        # 连接池最大连接数(使用负值表示没有限制) 默认为8
        max-active: 8
        # 连接池中的最大空闲连接 默认为8
        max-idle: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认为-1
        max-wait: -1ms
        # 连接池中的最小空闲连接 默认为 0
        min-idle: 0
    sentinel:
      # 主节点的别名
      master: mymaster
      # sentinel服务的ip 和 哨兵的端口
      nodes: 192.168.126.200:26379,192.168.126.200:26380,192.168.126.200:26381
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis连接池-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
@RestController
@RequestMapping("/redis")
public class RedisController {

    // 使用SpringBoot封装的RestTemplate对象
    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @RequestMapping("/get")
    public String get(String key) {
        String value = redisTemplate.opsForValue().get(key);
        return value;
    }

    @RequestMapping("/set")
    public String set(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
        return "success";
    }
}

以请求新增或者获取值的接口
最主要的是可以把主节点停止掉(用redis-cli -p 6379停止或者结束主节点进程),判断哨兵是否会主动创建新的主节点
在这里插入图片描述
成功连接到新的主节点!!!

关注我的公众号SpaceObj 领取idea系列激活码

posted on 2023-05-10 18:04  张伯灵  阅读(1125)  评论(0)    收藏  举报