来源:Node.js

发布订阅

Redis也具备发布订阅模式

1
2
3
4
5
PUBLISH news "omg"  # 将消息"omg"发送到news频道
SUBSCRIBE news music # 订阅news频道和music频道
UNSUBSCRIBE news # 取消订阅news频道
PSUBSCRIBE news.* # 模式订阅,订阅以news.开头的所有频道
PUNSUBSCRIBE news.* # 模式取消订阅,取消订阅以news.开头的所有频道

事务

Redis也支持事务

  • MULTI:开启一个事务,执行后,Redis会将接下来的命令都添加到事务队列中,而不是立即执行
  • EXEC:执行事务中的所有命令。执行时,按事务队列中的顺序执行所有的命令,执行结果以数组的形式返回给客户端
  • WATCH:对一个或多个键进行监视,如果在事务执行之前,被监视的键被修改了,事务将会被中断,不会执行
  • DISCARD:取消事务。执行时,所有在事务队列中的命令都会被清空,事务被取消

使用事务的基本流程:

  1. 使用MULTI命令开启一个事务
  2. 将需要执行的命令添加到事务队列中
  3. 如果需要,使用WATCH命令监视键
  4. 执行EXEC命令执行事务
  5. 根据EXEC的返回结果判断事务执行是否成功

事务中的命令不会立即执行,而是在执行EXEC命令时才会被执行,这意味着事务期间的命令并不会阻塞其他客户端的操作,也不会中断其他客户端对键的读写操作

Redis事务不支持回滚操作,如果在事务执行期间发生错误,事务会继续执行,而不会回滚已执行的命令。因此,在使用Redis事务时,需要保证事务中的命令是幂等的,即多次执行命令的结果和一次执行的结果相同

1
2
3
4
5
6
7
MULTI  # 开启事务

# 添加命令到事务队列
SET name "yajue"
GET name

EXEC # 执行事务