Redis主从复制模式配置详解

如果一个服务器只有一个节点(只用一个物理服务器部署整个程序),那么出现以下问题:

可用性:如果这个机器挂了,意味着服务就中断了.

性能:支持的并发量也是比较有限的.

        因此引入分布式系统,主要也是为了解决上述的单点问题。 分布式系统中,往往需要多个服务器来部署 redis 服务,从而构成 redis 集群,此时就可以让这个集群给整个分布式系统中的其他服务,提供更稳定 / 更高效的数据存储功能.

        本节介绍redis集群模式之一主从模式,主要框架如下图:

1、创建主从实例配置文件

        配置 redis 主从结构,需要启动多个 redis 服务器,分配在一个个单独的主机上(分布式),但是考虑到我们目前每个人,大概只有一个云服务器,因此就来实现一下,在一个服务器主机上,运行多个 redis-server 进程。

        我们需要配置一个主实例和两个从实例,配置步骤如下:

1.1、建立配置文件目录

在redis安装目录下创建一个目录redi-conf,用于存放redis主从配置文件

mkdir redis-conf

 1.2、建立主服务配置文件

我们找到一个原始的redis.conf文件,去掉注释和空白内容,复制到刚才创建的配置文件目录

过滤掉注释和空白内容的命令:

cat redis.conf |grep -v "#" |grep -v "^$"

然后复制到 redis-conf下

cat redis.conf |grep -v "#" |grep -v "^$" > redis-conf/redis-master.conf

整体命令如下:

其中:grep -v "^$"是忽略掉空白行,grep -v "#" 忽略注释

cat redis.conf |grep -v "#" |grep -v "^$" > redis-conf/redis-master.conf

文件创建完成后,修改端口为6380 ,保护模式为no,允许远程当问,进程文件也改为6380,数据文件名称也要改动,具体改动项如下:

protected-mode no
port 6380
pidfile /var/run/redis_6380.pid
dbfilename dump_6380.rdb
appendfilename "appendonly_6380.aof"

1.3、建立两个从服务配置文件

  1. 1、从redis-master.conf 拷贝一个文件名称为redis-slave1.conf,作为从服务1的配置文件
cp redis-master.conf  redis-slave1.conf

2、修改redis-slave1.conf的端口为6381和数据文件,修改项如下:

port 6381
pidfile /var/run/redis_6381.pid
dbfilename dump_6381.rdb
appendfilename "appendonly_6381.aof"

3、从redis-master.conf 拷贝一个文件redis-slave2.conf,作为从服务2的配置文件

cp redis-master.conf  redis-slave2.conf

4、修改redis-slave2.conf的端口为6382和数据文件,修改项如下:

port 6382
pidfile /var/run/redis_6382.pid
dbfilename dump_6382.rdb
appendfilename "appendonly_6382.aof"

2、设置主从关系配置

在从服务的配置文件加 slaveof 配置主从结构(绑定父节点为 6380 端口),让从服务跟随主服务;

1、先编辑从服务1配置文件redis-slave1.conf

vim redis-slave1.conf

在配置文件任何一行添加如下代码:

slaveof 127.0.0.1 6380

注意:127.0.01 为redis主服务IP地址;6380为主服务端口

        保存退出

2、同时编辑服务2配置文件redis-slave2.conf

vim redis-slave1.conf

在配置文件任何一行添加如下代码:

slavef 127.0.0.1 6380

3、启动redis实例

在redis-conf目录下,依次启动redis主实例和2个从实例;

启动主服务

redis-server redis-master.conf &

启动从服务1

redis-server redis-slave1.conf &

启动从服务2

redis-server redis-slave2.conf &

 

4、测试

连接主服务客户端

redis-cli -p 6380

随便set一个值: 

set k1 mingtianhuigengjiameihao

然后退出主服务,登录从服务,看是否能get k1值

redis-cli -p 6381

在6381获取值

get k1

同样测试从服务2

redis-cli -p 6382

获取值 

get k1

在 redis 客户端,通过 info replication 就可以查看当前节点的复制状态了.

info replication

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值