Redis主从复制

简单介绍

Redis的主从复制可以把数据复制多个副本部署到其他机器,从而避免了系统中的单点问题以及满足故障恢复和负载均衡等需求。

在Redis的主从复制架构中,存在两种节点,主节点和从节点。

  • 一个主节点可以有多个从节点
  • 一个从节点只能有一个主节点
  • 主从复制是主节点的数据会异步同步到所有的从节点上

如何使用主从复制

Redis默认部署是以主节点的形式部署的,我们只需要关心从节点如何部署即可。

想要部署一个从节点,只需要指定此节点的主节点这个节点就默认变成的从节点,下方是部署的三种方式:

  • 修改redis.conf中的配置slaveof 主节点ip 主节点port 后重启即可
  • 在redis-server启动命令后加入--slaveof 主节点ip 主节点port
  • 直接使用命令:slaveof 主节点ip 主节点port

验证

现在搭建一个3个节点的Redis主从复制集群。

首先使用6379搭建一个普通的redis节点,使用6380及6381搭建从节点。

使用如下命令验证是否搭建成功:

[root@syj ~]# redis-cli -h 127.0.0.1 -p 6379 info replication# Replicationrole:masterconnected_slaves:2slave0:ip=127.0.0.1,port=6381,state=online,offset=24896,lag=1slave1:ip=127.0.0.1,port=6380,state=online,offset=24896,lag=1master_replid:35ee68f397c08911164059e3b9c604a514b7ea6dmaster_replid2:0000000000000000000000000000000000000000master_repl_offset:24896second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:24896

可以看到已经显示了两个从节点的相关信息,接着从从节点的角度看一下

[root@syj ~]# redis-cli -h 127.0.0.1 -p 6380 info replication# Replicationrole:slavemaster_host:127.0.0.1master_port:6379master_link_status:upmaster_last_io_seconds_ago:1master_sync_in_progress:0slave_repl_offset:104026slave_priority:100slave_read_only:1connected_slaves:0master_replid:35ee68f397c08911164059e3b9c604a514b7ea6dmaster_replid2:0000000000000000000000000000000000000000master_repl_offset:104026second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:104026

默认情况下从节点是只读操作

[root@syj ~]#  redis-cli -h 127.0.0.1 -p 6380127.0.0.1:6380> set key 1(error) READONLY You can't write against a read only replica.

在主节点set的值会同步到从节点上

[root@syj ~]# redis-cli -h 127.0.0.1 -p 6379127.0.0.1:6379> set key 1OK
[root@syj ~]#  redis-cli -h 127.0.0.1 -p 6381127.0.0.1:6381> get key"1"

原文发布于微信公众号 - Java学习录(Javaxuexilu)

原文发表时间:2019-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券