本篇主要介绍redis 高可用哨兵集群搭建.
我们先想一个问题:哪种场景适合用redis缓存?我在一本书中看到,是这么写的,主要有以下几种场景:
1.大部分是读业务数据的系统
2.需要快速响应的系统
3.需要预备数据(在系统或者某项业务前准备那些经常访问的数据到缓存中,以便系统开始能够快速响应,也称为预热数据)的系统
4.对数据安全和一致性要求不太严格的系统
不适合使用缓存的场景有哪些?
1.读业务数据少且写入频繁的系统
2.对数据安全和一致性要求严格的系统
下面进入正题:
Redis中,缓存的高可用分为两种,一种是哨兵,另外一种是集群.此篇搭建一个哨兵集群.步骤如下:
1.引入spring-boot-redis 依赖
说明一下: Lettuce 是一个可伸缩的线程安全的Redis客户端,多个线程可以共享一个Redis连接,因为线程安全,所以牺牲了一部分性能.
一般来说,使用缓存并需要很高的线程安全,更注重的是性能.Jedis是一种多线程非安全的客户端,具备更高的性能.
2.多哨兵模式图解
3.修改三台虚拟机上 redis.conf 文件
主节点:
#禁用保护模式
protected-mode no
#修改可以访问的ip , 0.0.0.0 代表可以跨域访问
bind 0.0.0.0
#设置Redis服务密码
requeirepass 123456
两台从节点:
protected-mode no
#修改可以访问的ip , 0.0.0.0 代表可以跨域访问
bind 0.0.0.0
#设置Redis服务密码
requeirepass 123456
# 配置从哪里复制数据,也就是配置主节点服务器
replicaof 192.168.78.186:6379
# 配置主Redis 服务器密码
masterauth 123456
三台哨兵配置文件 sentinel.conf 修改如下
#禁止保护模式
protected-mode no
#配置主监听服务器,这里sentinel monitor 代表监控
# redis-master 代表服务器名称,可以自定义
#192.168.78.186 代表监控空的主服务器
#6379 代表端口
#2 代表只有2个或者2个以上的哨兵认为主服务器不可用的时候,才进行客观下线.
sentinel monitor redis-master 192.168.78.186:6379 2
# sentinel auth-pass 定义服务的密码
# redis-master服务 的名称
# 123456 服务器的密码
sentinel auth-pass redis-master 123456
4.启动Redis服务
到redis的安装路径下 ./src/redis-server ./redis.conf
5.启动哨兵服务
到redis的安装路径下 ./src/redis-sentinel ./sentinel.conf
注意 这里按顺序启动 redis 主节点 redis 从节点1 redis从节点 2 ,然后在启动三台哨兵服务
6. springboot 环境中配置 properties hup Yaml 文件
7.编写测试代码
这里方便 直接写在springboot的启动类里.
8.测试结果, 发现三台redis 服务器都成功写入成功和读取成功
浏览器测试结果
9.注意事项
1.因为设置了redis访问密码,所以进入redis客户端时先输入auth 123456 进行认证, 否则会提示没有权限
2.springboo它连接redis服务器提示连接超时,需要先关闭redis服务器防火墙
3.springboot版本用的是2.3.7.RELEASE ,目前是3.x.x版本,jdk 至少需要17 或21才可以.
4.本书内容主要来自:<<SpringCloud 微服务和分布式系统实践>>
网友评论