Redis2
Redis(3)
Redis 发布订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

以下实例演示了发布订阅是如何工作的,需要开启两个 redis-cli 客户端。
在我们实例中我们创建了订阅频道名为 charRedis:
第一个 redis-cli 客户端 (订阅 subscribe)
redis 127.0.0.1:6379[6]> subscribe charRedis
Reading messages... (press Ctrl-C to quit)
subscribe
charRedis
1
message
charRedis
this is a message!
message
charRedis
this is a message!
message
charRedis
this is a message!
第二个 redis-cli 客户端 (发布 publish)
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!"
1
127.0.0.1:6379[6]> publish charRedis "this is a message!!!!"
1
# 订阅者的客户端会显示如下消息
message
charRedis
this is a message!
message
charRedis
this is a message!
message
charRedis
this is a message!
取消订阅:unsubscribe
按照规则订阅:psubscribe
按照规则取消订阅:punsubscribe
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK
如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行
snapshotting 与 AOF 对比
• 持久化技术
1.RDB产生的文件小
2.RDB恢复快,可以快速将RDB文件传输到其他主机做数据恢复
3.在进行RDB备份时,主进程只需要创建一个子进程,所有的I/O操作都由子进程完成
4.不能完全保证数据安全,在两个备份点之间可能发生数据丢失
5.当数据量很大时,RDB可能会严重影响性能
• aof
1.数据备份粒度更小,数据安全性更高。
2.AOF只对日志文件进行追加操作,即使掉电,AOF日志仍然可用。
3.AOF文件通常比相同数据集的RDB文件大
4.AOF写日志可能会很

浙公网安备 33010602011771号