Redis主从服务器
主机与从机
机制
主机(master)以写为主,从机(slave)以读为主。
应用将数据写入主机,然后主机会将这些数据赋值到各个从机中。
应用要读取数据时,会直接在从机中读取数据。
优点
-
- 读写分离
- 容灾快速恢复,一台从服务器挂了,可以读取其他从服务器
配置主机与从机
假设有三个服务器,端口分别为6379,6380,6381,以6379为主机,6380,6381为从机来配置
目录结构为
-
- redis-7.0.0
- src
- redis-server
- redis-cli
- myredis
- redis6379.conf
- redis6380.conf
- redis6381.conf
1.创建配置文件
新建redis6379.conf文件
include "redis.conf文件路径" #引入redis配置文件,保证配置文件的基本参数
pidfile /var/run/redis_6379.pid #单独设置6379的pdifile文件路径
port 6379 #单独设置6379的端口
dbfilename dump6379.rdb #单独设置6379的rdb文件路径
新建redis6380.conf文件
include "redis.conf文件路径"
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
新建redis6381.conf文件
include "redis.conf文件路径"
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
2.启动三台服务器
当前所在路径为:redis-7.0.0/src,且配置文件已设置为后台启动
启动6379:./redis-server ../../myredis/redis6379.conf
启动6380:./redis-server ../../myredis/redis6380.conf
启动6381:./redis-server ../../myredis/redis6381.conf
查看进程
ps -ef | grep redis
3.接入指定服务器客户端
命令:./redis-cli -p 端口号
查看运行情况:info replication
可以打开三台机器的role都是master,都是主机
connected_slaves:0 表示0个从机
4.设置从机
命令:salveof <ip> <port>
设置完成可以发现 6379的connected_slaves变为2,而6380和6381的role都变成了slave,master_port都是6379。
而且在从机中无法进行写操作
几种主从模式
1.一主二仆
主机与从机重启
从机挂了重启后,会单独称为一个主服务器,需要重新加入主服务器,加入的时候数据会从头复制,主机中保存的会同步。
主服务器挂了后,从服务器不会上位,原地待命。主服务重启后依然是主服务器。
复制原理
-
-
- 当从服务器连接上主服务器后,从机向主机发送进行数据同步消息(从机发送同步信息)
- 主机接到从机发送过来同步消息,把主机数据进行持久化成rdb文件,把rdb文件发送到从机,从机拿到rdb进行读取。(主机发送rdb文件)
- 每次主服务器进行写操作后,都会与从服务器进行数据同步
-
2.薪火相传
机制
由于从机不光可以挂在主机上面,也可以挂在从机上面。
所以薪火相传是一个链式结构,从机嵌套从机。
复制rdb文件的时候是一级一级地传下去,而一主二仆模式由主机一个个的复制到各个从机。
3.反客为主
命令:slaveof no one
主机挂了后,从机输入命令slaveof no one,会变成主机,如果想让主机挂了后从机自动上位,需要使用哨兵模式
4.哨兵模式
相当于反客为主的自动版,能够后台监视主机是否故障,主机故障了就把从机转为主机
配置哨兵
在myredis中创建sentinel.conf文件,文件内容如下:
上面的1表示只要有1个哨兵同意就迁移主机。
启动哨兵
./redis-sentinel ../../myredis/sentinel.conf
查看进程就可以看到sentinel哨兵启动了
主从模式的缺点
复制延时
由于所有的写操作都是现在Master上操作,然后再同步到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题就会更加严重,Slave机器数量的增加也会使这个问题更加严重。
选择从机为上位的原则
原则依次为:
-
- 选择优先级考前的
- 选择偏移量最大的
- 选择runid最小的
注释:
优先级:可以在各自的redis.conf配置文件中设置,slave-priority 100,值越小优先级越高
偏移量:是指获得原主机数据最全的
runid:每个redis实例启动后都会随机生成一个40位的runid。
Jedis设置哨兵
本文来自博客园,作者:Laplace蒜子,转载请注明原文链接:https://www.cnblogs.com/RedNoseBo/p/16251026.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)