Redis2

Redis(3)

Redis 发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。

Redis 客户端可以订阅任意数量的频道。

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

pubsub1

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

pubsub2

以下实例演示了发布订阅是如何工作的,需要开启两个 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写日志可能会很
posted @ 2021-03-12 17:14  PaulGeorge13  阅读(58)  评论(0)    收藏  举报