我允镇镇镇篇哈
记上一次写关于redis 的博客,还是再springboot集成redis的时候,还没有看过的同学们可以点下传送门哈,今天要介绍的,是redis的进阶知识,关于redis的主从,哨兵,和集群。
1:主从
1.1 复制
redis 在在复制的概念中,数据库被分成2类,一类是主数据库,一类是丛数据库。主数据库是可以进行读写的,从数据库只能进行读。当主数据库的数据发生变化时,从数据库会同步主数据库的变化,保持主从数据库的数据一致性
1.2 主从配置
因为我是在windows下学习的这个redis的知识,所以就以window下进行操作,还不会在windows下进行redis安装的,可以点这个穿送门,下载下来,解压,然后复制2份出来,改下名字,变成这样的目录。
3个目录,代表不同的端口号 。然后再6380和6381的里面进行配置文件的修改。
再6380的目录下面,有一个redis.window.conf的文件,再里面把端口号修改成6380,并加上slaveof 127.0.0.1 6380
port 6381
slaveof 127.0.0.1 6379
结果如下图:
解释下这段意思,port代表修改端口号
slaveof 后面跟的是一个主机ip 然后一个端口号,代表要同步哪个主机的哪个端口的redis 这里我们用的是本地的6379端口做主机。
好了,用同样的方法,配置6381目录下的文件,然后启动起来。
启动的过程因为我们修改了配置文件,需要使用命令行启动,具体是再这个目录下打开控制台,然后输入
.\redis-server.exe .\redis.windows.conf
启动成功
启动说明这台redis是只读的数据库,并且连接的master 节点是127.0.0.1 6379机 也就是本地 ,6381的也是一样
全部启动完毕后,我们打开所有的客户端,进行我们的测试,是不是主从数据会同步,在6380的目录下,我们打开新的控制台,然后输入
.\redis-cli.exe -p 6380
换个端口,就可以查看不同端口的信息了。
接下来,我们打开我们的6379的客户端。查看下当前的信息
我们可以看到 6379的服务器有的connected_slaves 是2 说明当前的从数据库有2个,也就是我们的6380和6381
然后我们在里面设置一些值进去,然后去从数据库看看有没有同步过来,这样可以查看我们的是不是完成了主从配置
设置完成后,我们去从数据库看看,是否值已经同步过来了。
我们可以看到,6380端口的redis已经把数据同步过来了。所以我们的数据库主从模式是已经成功了。
怎么样,是不是很简单呢
哨兵
2.1 哨兵配置
光有数据库的主从配置是不够的,因为可能当我们的主数据库出现了异常,那这时候是不是整个系统不能访问了。这样的事故如果发生,是会产生很可怕的损失的。所以我们需要引入我们的管理人员,也就是哨兵。
哨兵的配置需要先在redis的目前下创建一个sentinel.conf的文件,用来配置哨兵的信息
# 这个是Redis6379配置内容,其他文件同理新增然后改一下端口即可,26380,和 26381。
#当前Sentinel服务运行的端口
port 26379
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6379 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel config-epoch mymaster 1
# Generated by CONFIG REWRITE
sentinel monitor mymaster 127.0.0.1 6379 2
解释下哨兵监听服务器的信息
mymaster 表示监视的主机名,也就是给127.0.0.1 6379 起了个名字
最后的数据2 表示最少需要2个哨兵同时判断当前的主机不可访问了,才会进行处理。
其他的2个目前也是一样的操作,换个端口就可以了
2.2 启动
接下来时启动的命令
.\redis-server.exe .\sentinel.conf --sentinel
启动完成后
可以看到,哨兵启动后,可以看见主从模型下 所有机器的信息。
2.3 测试
接下来,我们把6379的机器给关了,看看哨兵会不会在从数据库中选择新的机器做完主数据库
然后查看下日志,你会发现他会从从数据库中选择一个当初主数据库 继续,我这边是6381当初主数据库
然后再重启6379 你会发现,6379 变成了6381的从数据库,这时查看下信息 会发现
6381 真的变成master节点了
所以,我们是成功了使用哨兵,当主数据库发生异常是,可以保证服务的高可用
3 集群
待更新
个人GitHub项目,记录学习Java知识的过程 欢迎star