Redis主从复制


本文摘自PHP中文网,作者齐天大圣,侵删。

与mysql一样,redis也支持主从复制、读写分离,且配置比mysql要简单很多。下面我们来一起看看redis的主从复制。

建立复制

默认情况下,Redis都是主节点。现在,我来演示下如何开启主从复制。

首先,开启两个redis服务,这两个redis服务,除了绑定的端口不同及持久化的文件不同,其他配置完全一致

1

2

3

4

5

6

127.0.0.1:6379> keys *

1) "age"

2) "name"

 

127.0.0.1:6380> keys *

(empty list or set)

6379这个redis目前有两个键,而6380目前是空的。建立6379余6380之间的主从关系,让6379作为主节点,6380作为从节点。

建立复制有两个方式:

  • 修改6380的配置文件,在该配置文件中加上slaveof 127.0.0.1 6379,然后重启redis服务

  • 动态修改,直接输入slaveof 127.0.0.1 6379

1

2

3

4

5

127.0.0.1:6380> slaveof 127.0.0.1 6379

OK

127.0.0.1:6380> keys *

1) "name"

2) "age"

可以看到,复制已经建立了,现在6380数据和6379是一致的了。

分别对6379及6380执行info replication命令,可以看到相关信息。

1

2

3

4

5

6

7

8

9

10

11

12

13

127.0.0.1:6379> info replication

# Replication

role:master

connected_slaves:1

……

 

 

127.0.0.1:6380> info replication

# Replication

role:slave

master_host:127.0.0.1

master_port:6379

……

断开复制

断开复制操作非常简单,只需执行slaveof no one即可。

1

2

127.0.0.1:6380> slaveof no one

OK

另外还可以直接切换主节点。比如,现在6380是6370的从节点,现在6380想断开6379的主从关系,与6381建立新的复制关系。那么6380只需执行slaveof 127.0.0.1 6381即可。

但切主的时候需要注意一点,从节点之前的数据将会被清空,然后再去复制新主节点的数据。所以,如果之前的数据有用且没有备份下,且不可进行切主操作。

密码校验

若主节配置了requirepass,那么从节点就需要设置masterauth

只读

默认情况下从节点执行进行读操作,不能进行写操作。因为这么做是非常必要的,如果从节点进行了写操作,那么就会造成主从节点的数据不一致的情况。如果想从节点也可以写的话,修改配置项slave-read-only=no即可。

应用场景

redis的复制常见的应用场景有

  • 数据的实时备份,一般此种情况,只有一个从节点,从节点开启aof持久哈,节点的主要任务就是实时备份数据。

  • 故障转移,如果主节点发生了故障的话,那么可以使用从节点来继续运行系统

  • 读写分离,比较适合于读比较多的场景,主节点进行写操作,多个从节点进行读操作。因为复制是异步进行的,所以从节点数据可能会有延迟,这点也是开发时候需要注意的。

以上就是Redis主从复制的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Redis rdb方式数据备份与恢复【详解】

Redis集群怎么防止脑裂

Redis节点是什么

Redis分片详解

如何进入Redis数据库

laradock 如何添加 Redis 配置

安装Redis及php的Redis扩展

Redis入门学习手册分享

Redis连接数配置多少

Redis之list操作详解

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...