Redis 主从模式

2022-05-25 11:47:42 浏览数 (2)

主从模式架构

默认情况下,主节点可以读写,从节点只能读,禁止写操作。不修改配置让从节点支持写操作是没有意义的,因为首先写入的数据不会同步到其他节点,其次当主节点修改相同的数据时,从节点的数据会被覆盖。主节点挂机后,redis不会向外界提供写服务,因为剩下的从节点不会成为主节点。主节点挂机后,不会影响从节点的读取。主节点启动后,Redis将再次向外界提供写服务。当从节点挂起时,不会影响其他从节点的读取和主节点的读写。重启后,数据将从主节点同步。

image.png

上图中的集群由一个master(6379端口)和两个slave(6380和6381端口)构成,主从模式类似于数据库的读写分离机制,主要有以下特点:

1.主数据库可以进行读和写操作,而从数据库一般只允许读操作,主数据库写入数据后会将数据同步到从数据库,所以保证了无论从哪个数据库读取数据都是一致的。

2.其中一个slave挂了(如上图6380),不影响主数据库的读写操作,如果有不止一个slave则不影响整个集群系统的运行,如果slave全部挂掉则所有读写压力均放到主数据库上。

3.主数据库挂了(如上图6379),不影响从数据的读操作,整个系统则不提供写操作,但是读数据操作不受影响。

主从模式搭建方法

1、cd redis目录 新建一个redis_cluster目录

代码语言:javascript复制
mkdir redis_cluster

2、把原redis目录下的redis.conf文件复制到 redis_cluster

代码语言:javascript复制
cp -r redis.conf redis_cluster/

3、修改文件名 cd redis_cluster

代码语言:javascript复制
mv redis.conf  master_6379.conf

4、在复制一份Slave节点的配置

代码语言:javascript复制
cp master_6379.conf  slave_6380.conf

5、修改从节点配置

代码语言:javascript复制
port 6380
slaveof 0.0.0.0 6379 #主节点的ip和端口号
masterauth  #如果主节点设置了密码需要增加

截屏2022-05-24 10.42.44.png

启动主节点

代码语言:javascript复制
redis-server master_6379.conf

启动从节点

代码语言:javascript复制
redis-server slave_6380.conf

测试主节点

代码语言:javascript复制
redis-cli -p 6379
auth 你设置的redis密码
get name
set name redisTest
get name

截屏2022-05-24 10.51.27.png

切换到从节点

代码语言:javascript复制
redis-cli -p 6380
auth 你设置的redis密码
get name

截屏2022-05-24 10.53.09.png

我们可以看出,我们在 master 上设置了一个键,最后在 slave 获取到了这个键的值,即master 的数据会自动同步到 slave 节点。

现在,我们尝试在 slave 设置键,具体命令如下:

截屏2022-05-24 10.55.32.png

我们看到,此时提示我们不能在 slave 写入数据,即 master 可以读写数据,但 slave 只能读取数据。

0 人点赞