前言
本章节讲解Redis发布订阅、事务。
1、发布订阅
Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。
1.1、订阅消息
1.2、发布者
1.3、常用命令
命令 | 说明 |
---|---|
PSUBSCRIBE pattern [pattern …] | 订阅一个或多个符合指定模式的频道。 |
PUBSUB subcommand [argument [argument …]] | 查看发布/订阅系统状态,可选参数 1) channel 返回在线状态的频道。 2) numpat 返回指定模式的订阅者数量。 3) numsub 返回指定频道的订阅者数量。 |
PUBLISH subcommand [argument [argument …]] | 将信息发送到指定的频道。 |
PUNSUBSCRIBE [pattern [pattern …]] | 退订所有指定模式的频道。 |
SUBSCRIBE channel [channel …] | 订阅一个或者多个频道的消息。 |
UNSUBSCRIBE [channel [channel …]]退订指定的频道。 |
每个模式以*作为匹配符
2、事务
Redis 事务具有两个重要特性:
- 单独的隔离操作事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命令打断。
- 不保证原子性在 Redis 的事务中,如果存在命令执行失败的情况,那么其他命令依然会被执行,不支持事务回滚机制。
2.1、事务命令
命令 | 说明 |
---|---|
MULTI | 开启一个事务 |
EXEC | 执行事务中的所有命令 |
WATCH key [key …] | 在开启事务之前用来监视一个或多个key 。如果事务执行时这些 key 被改动过,那么事务将被打断。 |
DISCARD | 取消事务。 |
UNWATCH | 取消 WATCH 命令对 key 的监控。 |
事务可以理解为一个批量执行 Redis 命令的脚本,但这个操作并非原子性操作,也就是说,如果中间某条命令执行失败,并不会导致前面已执行命令的回滚,同时不会中断后续命令的执行(不包含监听 key 的情况)
事务开启前监听某个key,在事务中尝试修改他,会导致事务中断