redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)
来源:互联网 发布:python 网络拓扑图 编辑:程序博客网 时间:2024/06/05 19:32
(1)Redis的持久化机制
redis是个支持持久化的内存数据库。也就是说redis要经常把内存中的数据保存到硬盘中来保证持久化。
redis持久化方式有两种:
①.snapshotting(快照),也是默认方式
原理:默认redis是会以快照的形式将数据持久化到磁盘的(一个二进制文件,dump.rdb,这个文件名字可以指定),在配置文件(redis.conf)中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。当然我们也可以手动执行save或者bgsave(异步)做快照。
②.aof(Append-only file) 方式
原理:filesnapshotting方法在redis异常死掉时,最近的数据会丢失(丢失数据的多少视你save策略的配置),所以这是它最大的缺点,当业务量很大时,丢失的数据是很多的。Append-only方法可以做到全部数据不丢失,但redis的性能就要差些。AOF就可以做到全程持久化,只需要在配置文件中开启(默认是no),appendonly yes开启AOF之后,redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到redis关闭前的最后时刻。
AOF文件刷新的方式,有三种,在redis.conf 参考配置参数appendfsync :
appendfsync always每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全;
appendfsync everysec每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据;
appendfsync no依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。默认并推荐每秒刷新,这样在速度和安全上都做到了兼顾。
(2)消息发布订阅(pub/sub)
消息发布订阅是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。
redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息时。订阅该消息类型的全部client都会收到此消息。这里消息的传递是多对多的。一个client可以订阅多个 channel,也可以向多个channel发送消息。
请看个demo:创建三个redis client(session),
[1].在session1 和session2中 我用来订阅频道,
session1 中 订阅了blog1
redis 127.0.0.1:6379> subscribe blog1
Reading messages… (press Ctrl-C to quit)
1) “subscribe”
2) “blog1”
3) (integer) 1
session2中订阅了blog1 和blog3 频道:
redis 127.0.0.1:6379> subscribe blog1 blog3
Reading messages… (press Ctrl-C to quit)
1) “subscribe”
2) “blog1”
3) (integer) 1
1) “subscribe”
2) “blog3”
3) (integer) 2
[2].在session3 中用来publish 频道消息
redis 127.0.0.1:6379> publish blog1 merry-xmax
(integer) 2
redis 127.0.0.1:6379> publish blog3 hello
(integer) 1
redis 127.0.0.1:6379>
[3].会发现session3 发布完消息,session1和2 会自动弹出消息
- redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)
- redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)
- Redis pub/sub机制在实际运用场景的缺陷&&模拟JMS消息发布订阅的持久化特性
- Redis的发布/订阅(pub/sub)
- Redis发布及订阅消息(pub/sub)
- Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用
- linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能 标签: hiredishiredis异步APIhiredis事件处理redis消息订阅发布redis c接口 2016-
- NoSQL之Redis---PUB/SUB(订阅与发布)---基本命令
- NoSQL之Redis---PUB/SUB(订阅与发布)---JAVA实现
- redis源码分析之发布订阅(pub/sub)
- 分布式缓存Redis之发布/订阅(Pub/Sub)
- Redis Pub发布/sub订阅实现机制
- 9.Redis发布及订阅(pub/sub)
- Redis发布与订阅(pub/sub)
- Redis--pub/sub(发布与订阅)
- (十一)redis 发布与订阅(pub/sub)
- Spring-data-redis: pub/sub消息订阅
- Spring-data-redis: pub/sub消息订阅
- 两个成员的类模板2
- Asp.net Web API 2 学习随手记 (Expression)
- ListView 条目多样式展示
- 查找的有关操作
- win10 64位缺少msvcp60d.dll和msvcrtd.dll文件
- redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)
- bmp--16种颜色
- 微信在线调试
- PHP函数式编程初探
- Socket原理与编程基础
- C语言求定积分
- dubbo-admin-2.5.4控制台管理工具 在JDK8下启动错误
- 从上到下打印二叉树
- WPF新建项目设置启动程序