1.Redis安装
2.主从同步
主从同步使用的是发布/订阅机制,一般主服务以写操作为主,从服务以读操作为主。
数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
同步对读取操作的可扩展性和数据冗余很有帮助。
3.一主二从
准备:三台机器已安装好Redis
机器 | IP端口 | 服务 |
---|---|---|
yzm1 | 192.128.192.128:6381 | master |
yzm2 | 192.128.192.129:6381 | slave |
yzm3 | 192.128.192.130:6381 | slave |
也可以通过单机多Redis实例实现,比如
机器 | IP端口 | 服务 |
---|---|---|
yzm1 | 192.128.192.128:6381 | master |
yzm1 | 192.128.192.128:6382 | slave |
yzm1 | 192.128.192.128:6383 | slave |
这里演示是三台机器实现的
3 master服务
cd /usr/local/redis/redis-6.2.4/
# 新建redis-6381.conf启动文件
vim conf/redis-6381.conf
-----------------------编辑内容--------------------------------------
#端口
port 6381
#绑定IP
bind 192.168.192.128
#关闭保护模式,允许外部访问
protected-mode yes
#授权密码
requirepass 3Q3Q
#守护进程,即后台启动
daemonize yes
#进程ID,默认/var/run/redis.pid
pidfile /var/run/redis-6381.pid
#日志
loglevel notice
logfile "/usr/local/redis/redis-6.2.4/logs/log-6381.log"
#数据文件
dir /usr/local/redis/redis-6.2.4/db/
dbfilename dump-6381.rdb
#数据同步
save 900 1
save 300 10
save 60 10000
启动master服务
./bin/redis-server ./conf/redis-6381.conf
查看master信息
./bin/redis-cli -h 192.168.192.128 -p 6381 -a 3Q3Q
info replication
role:master # master服务
connected_slaves:0 #当前没有slave服务
4 slave服务
yzm2和yzm3同样的操作
#新建redis-6381.conf
vim conf/redis-6381.conf
-----------------------------------编辑内容-----------------------------
#端口
port 6381
#绑定IP
bind 192.168.192.129
#关闭保护模式,允许外部访问
protected-mode yes
#授权密码
requirepass 3Q3Q
#守护进程,即后台启动
daemonize yes
#进程ID,默认/var/run/redis.pid
pidfile /var/run/redis-6381.pid
#日志
loglevel notice
logfile "/usr/local/redis/redis-6.2.4/logs/log-6381.log"
#数据文件
dir /usr/local/redis/redis-6.2.4/db/
dbfilename dump-6381.rdb
#数据同步
save 900 1
save 300 10
save 60 10000
#master
slaveof 192.168.192.128 6381
masterauth 3Q3Q
启动slave服务
salve服务
role:slave
master_host:192.168.192.128 #master服务IP
master_port:6381
再看master服务
role:master
connected_slaves:2
slave0:ip=192.168.192.129,port=6381,state=online,offset=392,lag=1
slave1:ip=192.168.192.130,port=6381,state=online,offset=392,lag=1
5 数据同步
在master服务新增数据name=yzm1,在slave服务上能成功获取到name=yzm1
在slave服务新增数据name2=yzm2
(error) READONLY You can’t write against a read only replica.
slave服务默认是只读的
6.既主又从
机器 | IP端口 | 服务 |
---|---|---|
yzm1 | 192.128.192.128:6381 | master |
yzm2 | 192.128.192.129:6381 | slave |
yzm3 | 192.128.192.130:6381 | master or slave |
yzm3 | 192.128.192.130:6382 | slave |
yzm3 新增redis-6382.conf
#端口
port 6382
#绑定IP
bind 192.168.192.130
#关闭保护模式,允许外部访问
protected-mode yes
#授权密码
requirepass 3Q3Q
#守护进程,即后台启动
daemonize yes
#进程ID,默认/var/run/redis.pid
pidfile /var/run/redis-6382.pid
#日志
loglevel notice
logfile "/usr/local/redis/redis-6.2.4/logs/log-6382.log"
#数据文件
dir /usr/local/redis/redis-6.2.4/db/
dbfilename dump-6382.rdb
#数据同步
save 900 1
save 300 10
save 60 10000
#master
slaveof 192.168.192.130 6381
masterauth 3Q3Q
注意:master配置指向yzm3的6381
启动yzm3的6382
查看yzm3的6381信息
connected_slaves:1 #原来是0的
slave0:ip=192.168.192.130,port=6382,state=online,offset=0,lag=0 #多了salve
查看yzm3的6382信息,另开一窗口
yzm3的6382是yzm3的6381的slave服务,可以从6381获取到数据
如果master服务即yzm1的6381挂了,yzm3的6381升级为master
关闭yzm1的6381
yzm3的6381升级为master
slaveof no one
在把yzm2的6381slave服务挂载到yzm3的6381下面
slaveof 192.168.192.130 6381
这样就重新组成了主从架构