视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Redis主从复制
2020-11-09 06:52:58 责编:小采
文档


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

建立复制

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

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

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

  • 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命令,可以看到相关信息。

    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即可。

    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持久哈,节点的主要任务就是实时备份数据。

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

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

  • 下载本文
    显示全文
    专题