Redis主从复制简介
Redis
主从复制指的是一台Redis
数据库,后面挂多个从库,我们将从2方便来讲述Redis
主从复制: 1. 从而实现数据备份 2.读写分离等。
Redis
主从架构抽象出来如下:
即1个主库可以挂N多个从库。
Redis
主从复制优点
数据备份
这里指的数据备份有2个,第一个是我们想拷贝主库至某个地方,第二个是单纯的数据备份。前者若不想执行bgsave
而后拷贝rdb
,则可以尝试一下使用主从复制拷贝,效率很高且不复杂。后者则作为Redis
备份使用。
读写分离
每个数据库都有自身的瓶颈,虽然Redis
是基于内存实现的,但是它依旧有瓶颈,例如我们在各大云平台购买的单机版Redis
,其qps
基本在10w
内是稳定的,若超过该值,且又不想做集群的话,可以尝试下Redis
做主从,从而进行读写分离,降低其qps
。
配置Redis主从复制
话说的很多,我们如何来构建Redis
主从复制呢,我们来搭建一下,我们先准备2个Redis
,信息如下:
主机 | 端口 | 密码 | 角色 |
127.0.0.1 | 6379 | 无 | 主库 |
127.0.0.1 | 7380 | 无 | 从库 |
根据如上信息,我们增加2个配置。
Redis1
[root@pdudo ~]# cat redis-6379.conf bind 127.0.0.1 port 6379 daemonize yes [root@pdudo ~]#
Redis2
# cat redis-6380.conf bind 127.0.0.1 port 6380 daemonize yes [root@pdudo ~]#
有些小伙伴很好奇,我们Redis
配置这么一点配置就够了? 非也,而是Redis
有很多默认配置。我们若是没有指定,就使用的默认配置。
如上我们的配置稍微解释下 bind
是监听哪块网卡,port
是指定服务器端口,而daemonize
是允许在后台运行。
启动Redis
redis-server redis-6379.conf redis-server redis-6380.conf
从库如何连接主库
在从库执行SLAVEOF
即可。
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 OK 127.0.0.1:6380>
这样就连接上了主库,我们可以使用info
查看下,没错,主从复制就这样结束了。
验证主从复制
在redis
中,我们都可以使用info replication
查看主从复制情况。
主库执行info
127.0.0.1:6379> info replication # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6380,state=online,offset=267,lag=1 ... 127.0.0.1:6379>
从库执行info
127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6379 ... 127.0.0.1:6380>
我们可以看到,在响应的模式前面,有role
做了标记,是主还是从。 如上即设置了一个最简单的主从架构,我们插入数据后也正常。
总结
这里有个点要注意一下,这也是我们后面要讲的主从复制原理,这里提前提及一下,避免有大佬翻车了就不好了: 若2个Redis
做主从复制,那么作为从库而言,它在连接上主库后,会清掉自身所有的数据,这是非常危险的,我们在操作的时候,尤其要注意,对生产环境要有敬畏之心,不要搞崩了,那就只要跑路了。
还有一点也是做运维的小知识点,分享给大家,任何一个技术/开源软件,大家在搭建的时候,没必要先了解原理,先把服务搭建起来,而后再看原理,会清晰的多。总结一点就是,想得多,不如做得多,实践出真章。