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.一主二仆

主机与从机重启

从机挂了重启后,会单独称为一个主服务器,需要重新加入主服务器,加入的时候数据会从头复制,主机中保存的会同步。

主服务器挂了后,从服务器不会上位,原地待命。主服务重启后依然是主服务器。

复制原理

      1. 当从服务器连接上主服务器后,从机向主机发送进行数据同步消息(从机发送同步信息)
      2. 主机接到从机发送过来同步消息,把主机数据进行持久化成rdb文件,把rdb文件发送到从机,从机拿到rdb进行读取。(主机发送rdb文件)
      3. 每次主服务器进行写操作后,都会与从服务器进行数据同步

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机器数量的增加也会使这个问题更加严重。


 

选择从机为上位的原则

原则依次为:

    1. 选择优先级考前的
    2. 选择偏移量最大的
    3. 选择runid最小的

注释:

优先级:可以在各自的redis.conf配置文件中设置,slave-priority 100,值越小优先级越高

偏移量:是指获得原主机数据最全的

runid:每个redis实例启动后都会随机生成一个40位的runid。


 

Jedis设置哨兵

 

 

posted @   Laplace蒜子  阅读(172)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示