redis的发布订阅、持久化存储、redis的主从复制
redis的发布订阅
1. 创建redis配置文件
vim /opt/redis_conf/reids-6379.conf
mkdir /data/6379
redis-server redis-6379.conf # 开启redis 6379 服务端
resdis-cli -p 6379 # 进入redis 6379 的客户端 (需要开启6379 下的3个redis客户端)
发布者:
接收者:
持久化存储
1.RDB持久化配置
redis是一个内存型的数据库
断电数据会消失
重启服务数据会消失
重启服务器数据会消失
1. 创建redis配置文件
vim /opt/redis_conf/reids-6380.conf
写入以下配置
port 6379 daemonize yes dir /data/6379 pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" protected-mode yes dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000
参数说明:
mkdir /data/6380
redis-server redis-6380.conf # 开启redis 6380 服务端
resdis-cli -p 6380 # 进入redis 6380 的客户端
创建几条数据,并使用save命令开启rdb持久化
# 实现持久化和检查持久化生效的过程: 查看redis8380是否启动 netstat -tunlp |grep 6380 set name deng save # 持久化保存 netstat -tunlp |grep 6380 kill 9 88669 # 将该进程杀死,停用redis 6380 服务 查看 redis 数据是否已经保存 redis-server redis-6380.conf # 开启redis6380 redis-cli -p 6380 # 进入6380 客户端 keys *
1 修改reids配置文件
vim /opt/redis_conf/redis-6380.con
加入以下两行配置
appendonly yes appendfsync everysec
保存退出
2 重启redis服务
pkill reids redis-server /opt/redis_conf/redis-6380.conf
3 验证appendonly.aof文件里面的数据和redis里面的数据是否健在
客户端添加数据:
daemonize yes port 6380 logfile /data/6380/redis.log dir /data/6380 dbfilename dbmp.rdb save 900 1 #rdb机制 每900秒 有1个修改记录 save 300 10 #每300秒 10个修改记录 save 60 10000 #每60秒内 10000修改记录
2. 删除上面演示已经持久化储存的文件
3.启动redis服务端
4.检查RDB文件
5 备份RDB文件
6 执行命令,开启AOF持久化
CONFIG set appendonly yes # 开启AOF功能 CONFIG SET save "" # 关闭RDB功能
7 验证旧的RDB数据库数据是否转入AOF, 以及AOF持久化文件是否正常写入
redis的主从复制
应用:负载均衡,故障切换,读写分离
1 准备三个redis配置文件
cd /opt/redis_conf redis-6380.conf # 主数据库master redis-6381.conf # 从库slave redis-6382.conf # 从库slave
2. 配置文件:
vim /opt/redis_conf/redis-6380.conf
写入以下配置:
port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 protected-mode no
3 目前这三个配置文件配置一样,只是端口的不同
#可以使用这一条命令通过redis-6380.conf生成6381和6382的配置文件 sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf sed "s/6380/6382/g" redis-6380.conf > redis-6382.conf
#
mkdir /data/{6381,8382}
4. 在redis-6381.conf和redis-6382.conf下添加以下配置,使之成为从数据库:
# 添加下面这句到redis-6381.conf和redis-6382.conf配置下
slaveof 127.0.0.1 6380
5. 确认三个配置文件无误
cat redis-6380.conf cat redis-6381.conf cat redis-6382.conf
6 开启这三个redis服务,确保三个服务启动正常
redis-server redis-6380.conf redis-server redis-6381.conf redis-server redis-6382.conf
7 查看redis主从数据库的状态
redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6382 info replication
8 验证redis主从复制情况
(1)先验证三个数据库是否能正常连接
主库 6380 :
从库 6381:
从库6382:
9 手动进行主从复制故障切换
(1) 杀掉6380的进程,模拟主库故障
kill -9 进程ID
(2)在6381和6382上手动指定一个主库(我现在指定6382为主库)
(3) 在6382的redis上执行这一行命令
slaveof no one
(4) 在6381上执行以下命令,将原来的指向6380改为指向6382
slaveof no one slaveof 127.0.0.1 6382
(5) 验证新的主从架构状态
(6) 验证新的主从架构是否可以正常写入数据,同步数据
主库6382 中写入数据:
从库6381 中查看数据: