主从复制是指将一台redis服务器的数据复制到其他redis服务器,也叫主节点和从节点。
一个主节点可以有多个从节点。而每个从节点只能有一个主节点。数据的复制是单向的,只能由主节点到从节点。一般来说,主节点负责写操作,从节点负责读操作。主节点会将自己的数据变化,通过异步的方式发送给从节点,从节点接收到主节点的数据之后更新自己的数据,这样就达到了数据一致的目的。
配置主从复制
主节点不需要修改任何配置,因为默认的配置就是主节点,只需要修改从节点的配置就可以了。
修改的方式有两种,一种是通过命令行执行命令,另一种是通过配置文件来修改。
命令行的话就是使用slaveof命令来直接指定主节点的IP和端口。这种方式不是很常用
我们主要讲一下,通过配置文件来修改的方式。
redis的配置文件时redis.conf这个文件,一般在redis的安装目录下
把配置文件复制到根目录
回到根目录再来复制一个6380的文件,把它作为从节点的配置文件。6380就是我们待会要使用的从节点的端口号
用vscode来打开一下这个配置文件。我们只需要改以下的几个东西。
1、端口号改为6380
2、把pidfile这个配置项也改成6380。PID也就是进程ID,为了和主节点的PID文件区分开。
redis是以守护进程的方式运行,系统默认会把pid写入到这个文件里面。因为这里我们要启动多个redis服务,所以要把pid文件区分开
这个加上端口号,这个就是之前我们说的持久化文件了。当我们执行save或者bgsave命令的时候,就会把内存中的数据保存到这个文件里面。为了区分开主节点和从节点的数据,我们也要把这个文件名加上端口号
replicaof是用来指定主节点,默认是注释掉的。
我们复制一行,IP地址改成127.0.0.1,端口号改成6379.表示我们现在配置的节点是6379这个库的从节点
我们打开一个新得终端,来启动一下这个从节点。方式和之前一样,使用redis-server命令加上刚刚修改完得6380配置文件
我们再来启动一个客户端。来连接一下从节点
连接成功之后,使用info replication命令来查看信息,可以看到这个从节点得角色是slave。表示这个节点是一个从节点,对应的主节点端口号是6379。这样就表示主从复制已经配置成功了
我们再打开一个终端来连接一下主节点。使用keys命令来查看一下两边数据是否一致。
两边都有添加
从节点上的数据与主节点是一样的,主节点的数据变化会自动同步到从节点上。当然从节点也可以配置多个
比如可以把6380文件复制一个6381出来
然后使用vi编辑器,来将文件中的端口号6380整体替换成6381,用这个命令直接替换。
然后使用:wq保存推出。
再来启动一下这个从节点,打开一个新的终端,找到6381
主节点可以看到已经连接了两个从节点。一主两从