赞
踩
在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主节点负责写入数据,而从节点负责读取数据。
主从模式的结构图如下:
如图 1 所示,Redis 主机会一直将自己的数据复制给 Redis 从机,从而实现主从同步。在这个过程中,只有 master 主机可执行写命令,其他 salve 从机只能只能执行读命令,这种读写分离的模式可以大大减轻 Redis 主机的数据读取压力,从而提高了Redis 的效率,并同时提供了多个数据备份。主从模式是搭建 Redis Cluster 集群最简单的一种方式。
Redis 提供了两种实现主从模式的方法,下面进行逐一介绍。为了方便演示,我们只从一台机器上搭建主从模式。
使用命令在服务端搭建主从模式,其语法格式如下:
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 的从机,完全备份了主机的数据,它可以执行查询命令,但是不能执行写入命令。
如果你注意观察服务端的话,您会看到以下提示:
- [18160] 20 Jan 17:40:34.101 # Server initialized #服务初始化
- [18160] 20 Jan 17:40:34.108 * Ready to accept connections #准备连接
- [18160] 20 Jan 17:40:34.108 * Connecting to MASTER 127.0.0.1:6379 #连接到主服务器
- [18160] 20 Jan 17:40:34.109 * MASTER <-> REPLICA sync started #启动副本同步
- [18160] 20 Jan 17:40:34.110 * Non blocking connect for SYNC fired the event.#自动触发SYNC命令,请求同步数据
- [18160] 20 Jan 17:40:34.110 * Master replied to PING, replication can continue...
- [18160] 20 Jan 17:40:34.112 * Partial resynchronization not possible (no cached master)
- [18160] 20 Jan 17:40:34.431 * Full resync from master: 6eb220706f73107990c2b886dbc2c12a8d0d9d05:0
- [18160] 20 Jan 17:40:34.857 * MASTER <-> REPLICA sync:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。