Redis Cluster主从模式详解

在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主节点负责写入数据,而从节点负责读取数据。

主从模式解析

主从模式的结构图如下:

如图所示,Redis 主机会一直将自己的数据复制给 Redis 从机,从而实现主从同步。在这个过程中,只有 master 主机可执行写命令,其他 salve 从机只能只能执行读命令,这种读写分离的模式可以大大减轻 Redis 主机的数据读取压力,从而提高了Redis 的效率,并同时提供了多个数据备份。主从模式是搭建 Redis Cluster 集群最简单的一种方式。

主从模式实现

Redis 提供了两种实现主从模式的方法,下面进行逐一介绍。为了方便演示,我们只从一台机器上搭建主从模式

1) 使用命令实现

使用命令在服务端搭建主从模式,其语法格式如下

redis-server --port <slave-port> --slaveof <master-ip> <master-port>

执行以下命令

#开启开启一个port为6300的从机,它依赖的主机port=6379

C:\Users\Administrator> redis-server --port 6300 --slaveof 127.0.0.1 6379

输出结果如下图:

接下来开启客户端,并执行查询命令,如下所示

C:\Users\Administrator>redis-cli -p 6300

127.0.0.1:6300> get name

"jack"

127.0.0.1:6300> get website

"www.biancheng.net"

#不能执行写命令

127.0.0.1:6300> set myname BangDe

(error) READONLY You can't write against a read only slave.

127.0.0.1:6300> keys *

  1. "myset:rand_int"

  2. "ID"

  3. "title"

  4. "course2"

  5. "website"

  6. "age"

  7. "user:2"

  8. "salary"

  9. "mystream"

  10. "key:rand_int"

  11. "user:uv:2021011308"

....

注意:此时 port=6300 的服务端界面不能关闭。从上述命令可以看出,port =6300 的从机,完全备份了主机的数据,它可以执行查询命令,但是不能执行写入命令。
主从模式下,数据的同步是自动完成的,这个数据同步的过程,又称为全量复制

您也可以使用下面的命令来创建主从模式。启动一个服务端,并指定端口号

#指定端口号为63001,不要关闭

redis-server --port 63001

打开一个客户端,连接服务器,如下所示

#连接port=63001的服务器

C:\Users\Administrator>redis-cli -p 63001

#现在处于主机模式下,所以允许读写数据

127.0.0.1:63001> keys *

  1. "FANS"

  2. "user:login"

  3. "course2"

...

127.0.0.1:63001> set myname 123456

OK

#将当前服务器设置成从服务器,从属于6379

127.0.0.1:63001> SLAVEOF 127.0.0.1 6379

OK

#写入命令执行失败

127.0.0.1:63001> SET mywebsite www.biancheng.net

(error) READONLY You can't write against a read only replica.

#再次切换为主机模式,执行下面命令

127.0.0.1:63001> SLAVEOF no one

OK

#写入成功

127.0.0.1:63001> SET mywebsite www.biancheng.net

OK

上述示例中,主要使用了两个命令,如下所示:

复制代码
slaveof IP PORT #设置从服务器
slaveof no one  #使服务器切换为独立主机
2) 修改配置文件实现

每个 Redis 服务器都有一个与其对应的配置文件,通过修改该配置文件也可以实现主从模式,下面在 Ubuntu 环境下对该方法进行演练

新建 redis_6302.conf 文件,并添加以下配置信息:

slaveof 127.0.0.1 6379 #指定主机的ip与port

port 6302 #指定从机的端口

启动 Redis 服务器,执行以下命令:

$ redis-server redis_6302.conf

客户端连接服务器,并进行简单测试。执行以下命令:

$ redis-cli -p 6302

127.0.0.1:6300> HSET user:username biangcheng

#写入失败

(error) READONLY You can't write against a read only slave.

提示:通过命令搭建主从模式,简单又快捷,所以不建议您使用修改配置文件的方法。

主从模式不足

主从模式并不完美,它也存在许多不足之处,下面做了简单地总结:

  • **1)**Redis 主从模式不具备自动容错和恢复功能,如果主节点宕机,Redis 集群将无法工作,此时需要人为干预,将从节点提升为主节点。
  • **2)**如果主机宕机前有一部分数据未能及时同步到从机,即使切换主机后也会造成数据不一致的问题,从而降低了系统的可用性。
  • **3)**因为只有一个主节点,所以其写入能力和存储能力都受到一定程度地限制。
  • **4)**在进行数据全量同步时,若同步的数据量较大可能会造卡顿的现象。
相关推荐
@LetsTGBot搜索引擎机器人1 天前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐1 天前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
Tony Bai1 天前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072011 天前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风1 天前
Redis完全指南:从诞生到实战
数据库·redis·缓存
QQ_4376643141 天前
Redis协议与异步方式
数据库·redis·bootstrap
纪莫1 天前
技术面:MySQL篇(InnoDB事务执行过程、事务隔离级别、事务并发异常)
数据库·java面试⑧股
Nerd Nirvana1 天前
数据库模型全景:从原理到实践的系统性指南
数据库·oracle·电力行业
SelectDB1 天前
从 Greenplum 到 Doris:集群缩减 2/3、年省数百万,度小满构建超大规模数据分析平台经验
数据库·数据分析·apache