Redis主从架构和主从从架构集群搭建详细步骤

,本文主要介绍Redis主从架构和主从从架构,耐心阅读完本文,相信你会对Redis主从架构和主从从架构有一个清晰的认识。

Redis主从复制的功能非常强大,它有以下好处:

1.避免Redis单点故障
2.构建读写分离架构,满足读多写少的应用场景

1.主从架构

1.1 Redis主从架构拓扑图结构
Redis主从架构图示

1.2 主从结构搭建

Redis集群不用安装多个Redis,只需复制多个配置文件,修改即可。所以如果要进行主从结构搭建,需先安装单机版Redis。单机版Redis安装可参照:单机版Redis安装教程

1.2.1 在安装好单机版的前提下,复制三份配置文件

进入redis所在目录
# cd /opt/redis/redis-3.2.8

创建637963806381目录,分别将安装目录下的redis.conf拷贝到这三个目录下。
# mkdir -p /opt/redis/6379 && cp redis.conf /opt/redis/6379/6379.conf
# mkdir -p /opt/redis/6380 && cp redis.conf /opt/redis/6380/6380.conf
# mkdir -p /opt/redis/6381 && cp redis.conf /opt/redis/6381/6381.conf

1.2.2 分别修改配置文件

# vim /opt/redis/6379/6379.conf 

# Redis使用后台模式
daemonize yes

# 关闭保护模式
protected-mode no

# 注释以下内容开启远程访问
# bind 127.0.0.1

# 修改启动端口为6379
port 6379

# 修改pidfile指向路径
pidfile /opt/redis/6379/redis_6379.pid

以此类推,修改端口63806381配置。

1.2.3 分别启动三个Redis实例

/opt/redis/redis-3.2.8/bin/redis-server /opt/redis/6379/6379.conf
/opt/redis/redis-3.2.8/bin/redis-server /opt/redis/6380/6380.conf
/opt/redis/redis-3.2.8/bin/redis-server /opt/redis/6381/6381.conf

1.2.4 设置主从

在Redis中设置主从有2种方式:
1.在redis.conf中设置slaveof
    a)  slaveof <masterip> <masterport>

2、  使用redis-cli客户端连接到redis服务,执行slaveof命令
    a)  slaveof <masterip> <masterport>

第二种方式在重启后将失去主从复制关系。

我们这里使用第二种方式设置主从:

使用Redis客户端连接上6380端口
# redis-cli -h 192.168.29.128 -p 6380
设置6380端口Redis为6379的从
192.168.29.128:6380> slaveof 192.168.29.128 6379
OK

使用Redis客户端连接上6381端口
# redis-cli -h 192.168.29.128 -p 6381
设置6381端口Redis为6379的从
192.168.29.128:6381> slaveof 192.168.29.128 6379
OK

1.2.5 查看Redis主从关系

使用Redis客户端连接上6379端口
# redis-cli -h 192.168.29.128 -p 6379

查看Redis主从关系 如下图所示
192.168.29.128:6379> info replication

Redis主从关系图

role:角色信息
slaveX:从库信息
connected_slaves:从库数量

1.2.6 测试
在主库写入数据
主库写入数据

在从库读取数据
从库读取数据

2. 主从从架构

2.1 Redis主从从架构拓扑图结构
Redis主从从架构拓扑图结构

2.2 主从从架构搭建

Redis的主从架构的缺点是所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,所以我们使用主从从结构来处理

2.2.1 前面步骤同主从架构一致,只是在设置主从结构时,设置6380为6379的从,6381为6380的从

使用Redis客户端连接上6380端口
# redis-cli -h 192.168.29.128 -p 6380
设置6380端口Redis为6379的从
192.168.29.128:6380> slaveof 192.168.29.128 6379
OK

使用Redis客户端连接上6381端口
# redis-cli -h 192.168.29.128 -p 6381
设置6381端口Redis为6380的从
192.168.29.128:6381> slaveof 192.168.29.128 6380
OK

2.2.2 查看主从从架构信息如下:
主从从架构信息

主从从架构信息

主从从架构信息

2.2.3 测试

在主库写入数据
主库写入数据

在从库查询数据
在从库查询数据

在从库查询数据

3.从库只读

默认情况下redis数据库充当slave角色时是只读的不能进行写操作

可以在配置文件中开启非只读:slave-read-only no

4.主从复制的过程原理

1.当从库和主库建立MS关系后,会向主数据库发送SYNC命令

2.主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来

3.当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis

4.从Redis接收到后,会载入快照文件并且执行收到的缓存的命令

5.之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致

5.无磁盘复制

通过前面的复制过程我们了解到,主库接收到SYNC的命令时会执行RDB过程,即使在配置文件中禁用RDB持久化也会生成,那么如果主库所
在的服务器磁盘IO性能较差,那么这个复制过程就会出现瓶颈,庆幸的是,Redis2.8.18版本开始实现了无磁盘复制功能(不过该功能
还是处于试验阶段)。

原理:Redis在与从数据库进行复制初始化时将不会将快照存储到磁盘,而是直接通过网络发送给从数据库,避免了IO性能差问题。

开启无磁盘复制:repl-diskless-sync yes

注:如果要取消Redis主从关系,可以在对应的从库执行SLAVEOF NO ONE命令,取消主从关系

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值