背景:在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满足故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制的功能,实现了相同数据的多个 Redis 副本。
什么是主从复制?
在redis若干个节点中,有的是主节点,有的是从节点。这里如果,我们部署了3个 redis-server,其中有一个主节点,有2个从节点。这里从节点必须听主节点的,从节点只允许进行读操作,主节点进行写操作。
从节点上的数据会根据主节点上的数据变化而变化,从节点的数据要和主节点上的数据保持一直。如果,我们从节点挂了一个,那么对于我们的服务影响是很小的,从其他从节点或者是主节点上读取数据即可,那么我们的主节点如果挂了,那么真就不能写数据了。
如图:
建立复制
首先呢要想配置,redis的主从复制的结构,至少要启动3个redis服务程序,如果没有3台服务器,那么我们可以,通过修改复制配置文件的方式,来启动3台redis服务程序。其实这里我们是通过修改端口号来启动3个不同端口号的redis服务程序。分配了不同的进程。
这个操作比较简单,我就不掩饰了。
建立主从结构
如图以下有三种构建方式:
主节点是master,从节点是slave,在这里我们还需要将从节点修改其 daemonize 为 yes,目的是将从节点以后台进程的方式执行。
这里我设置的两个从节点的端口号,分别为 6380 和 6381。
如以下命令:
redis-server /etc/redis/redis-slave.conf --port 6380 --slaveof 127.0.0.1 6379
表示 6380 为6379的从节点。



断开复制
在这里我们如果断开6381从节点与主节点的复制,会怎么样呢?

以上只是说明了主从复制,后面还会讲到主从复制的具体流程。