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-.conf
写入以下配置
port
daemonize yes
dir /data/
pidfile /data//redis.pid
loglevel notice
logfile "/data/6379/redis.log"
protected-mode yes
dbfilename dbmp.rdb
save
save
save
参数说明:
mkdir /data/6380
redis-server redis-6380.conf # 开启redis 6380 服务端
resdis-cli -p 6380 # 进入redis 6380 的客户端
创建几条数据,并使用save命令开启rdb持久化
# 实现持久化和检查持久化生效的过程:
查看redis8380是否启动 netstat -tunlp |grep set name deng save # 持久化保存 netstat -tunlp |grep kill # 将该进程杀死,停用redis 服务 查看 redis 数据是否已经保存 redis-server redis-.conf # 开启redis6380 redis-cli -p # 进入6380 客户端 keys *
2.redis AOF持久化
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里面的数据是否健在
客户端添加数据:
3 redis不重启,从RDB切换到AOF
1 配置RDB持久化,确保没有AOF的配置
daemonize yes
port
logfile /data//redis.log
dir /data/
dbfilename dbmp.rdb
save #rdb机制 每900秒 有1个修改记录
save #每300秒 10个修改记录
save #每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-.conf # 主数据库master
redis-.conf # 从库slave
redis-.conf # 从库slave
2. 配置文件:
vim /opt/redis_conf/redis-.conf
写入以下配置:
port
daemonize yes
pidfile /data//redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/
protected-mode no
3 目前这三个配置文件配置一样,只是端口的不同
#可以使用这一条命令通过redis-.conf生成6381和6382的配置文件
sed "s/6380/6381/g" redis-.conf > redis-.conf
sed "s/6380/6382/g" redis-.conf > redis-.conf
#
mkdir /data/{6381,8382}
4. 在redis-6381.conf和redis-6382.conf下添加以下配置,使之成为从数据库:
# 添加下面这句到redis-6381.conf和redis-6382.conf配置下
slaveof 127.0.0.1
5. 确认三个配置文件无误
cat redis-.conf
cat redis-.conf
cat redis-.conf
6 开启这三个redis服务,确保三个服务启动正常
redis-server redis-.conf
redis-server redis-.conf
redis-server redis-.conf
7 查看redis主从数据库的状态
redis-cli -p info replication
redis-cli -p info replication
redis-cli -p 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
(5) 验证新的主从架构状态
(6) 验证新的主从架构是否可以正常写入数据,同步数据
主库6382 中写入数据:
从库6381 中查看数据:
redis的发布订阅、持久化存储、redis的主从复制的更多相关文章
- .net core 使用Redis的发布订阅
Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心.接下来介绍一下.net core 使用 ...
- Linux(6)- redis发布订阅/持久化/主从复制/redis-sentinel/redis-cluster、nginx入门
一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...
- redis的发布订阅模式
概要 redis的每个server实例都维护着一个保存服务器状态的redisServer结构 struct redisServer { /* Pubsub */ // 字典,键为频道, ...
- [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐
[翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...
- python之上下文管理、redis的发布订阅、rabbitmq
使用with打开文件的方式,是调用了上下文管理的功能 #打开文件的两种方法: f = open('a.txt','r') with open('a.txt','r') as f 实现使用with关闭s ...
- 【spring boot】【redis】spring boot 集成redis的发布订阅机制
一.简单介绍 1.redis的发布订阅功能,很简单. 消息发布者和消息订阅者互相不认得,也不关心对方有谁. 消息发布者,将消息发送给频道(channel). 然后是由 频道(channel)将消息发送 ...
- Redisson 分布式锁实现之前置篇 → Redis 的发布/订阅 与 Lua
开心一刻 我找了个女朋友,挺丑的那一种,她也知道自己丑,平常都不好意思和我一块出门 昨晚,我带她逛超市,听到有两个人在我们背后小声嘀咕:"看咱前面,想不到这么丑都有人要." 女朋友 ...
- RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用
本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...
- StackExchange.Redis 使用-发布订阅 (二)
使用Redis的发布订阅功能 redis另一个常见的用途是发布订阅功能 . 它非常的简单 ,当连接失败时 ConnectionMultiplexer 会自动重新进行订阅 . ISubscriber s ...
随机推荐
- [数学]MIT牛人解说数学体系
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/study/science/mit_math ...
- PHP实现 手机号码归属地查询
在工作中需要对手机号码进行归属地查询,就在网上找了下解决方案,发现通过号段非常好判断. 我将数据库文件放到了百度网盘,请有需要的朋友去下载. 链接: https://pan.baidu.com/s/1 ...
- 实验二:MAL——简单后门 by:赵文昊
实验二:MAL--简单后门 一.后门是什么? 哪里有后门呢? 编译器留后门 操作系统留后门 最常见的当然还是应用程序中留后门 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序. 二.认识netc ...
- 使用hashlib进行文件校验
import hashlib import os path = r'D:\CentOS 64 位' def file_md5(path): """ 文件校验 :param ...
- bugfree3.0.1-修改“优先级”为中文引起的PHP Error
博主在搭建好bugfree后,修改了系统中“优先级”字段,将原先系统定义的优先级“1.2.3.4”修改为符合博主自己项目要求的优先级“高.中.低”.修改成功后,系统确实将原先提交的BUG优先级从“1. ...
- abap 断言
1: Assert equal http://www.saptechnical.com/Tutorials/OOPS/ABAPUnit/Index.htm
- [js]函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系.
函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系. <script> //如何查找上级作用域? //看函数在哪个作用域下定义的,他的上级作用域就是谁. 跟函数在哪执行的没 ...
- numpy 性能提升
a = np.array([1,2,3,4,5,1,2,2,2])c = np.unique(a)print(c) 对于很大的稀疏矩阵,我们不能用a[a>0]去取大于0的元素,而应该使用np.w ...
- async await 的使用。 其实就是和then一样,只不过改变了链式写法
这样写显得更加舒服.
- InternalError (see above for traceback): Blas GEMM launch failed
训练BiLSTM模型的时候报错: InternalError (see above for traceback): Blas GEMM launch failed : a.shape=(32, 200 ...