Redis中的发布订阅和事务


1.Linux上安装Redis

2.Redis中的五种数据类型简介

3.Redis字符串(STRING)介绍

4.Redis字符串(STRING)中BIT相关命令

5.Redis列表与集合

6.Redis散列与有序集合


发布订阅


redis的发布订阅系统有点类似于我们生活中的电台,电台可以在某一个频率上发送广播,而我们可以接收任何一个频率的广播,Android中的broadcast也和这类似。

订阅消息的方式如下:

127.0.0.1:6379> SUBSCRIBE c1 c2 c3

Reading messages… (press Ctrl-C to quit)

  1. “subscribe”

  2. “c1”

  3. (integer) 1

  4. “subscribe”

  5. “c2”

  6. (integer) 2

  7. “subscribe”

  8. “c3”

  9. (integer) 3

这个表示接收c1,c2,c3三个频道传来的消息,发送消息的方式如下:

127.0.0.1:6379> PUBLISH c1 “hello redis!”

(integer) 1

当c1这个频道上有消息发出时,此时在消息订阅控制台可以看到如下输出:

  1. “message”

  2. “c1”

  3. “hello redis!”

在redis中,我们也可以使用模式匹配订阅,如下:

127.0.0.1:6379> PSUBSCRIBE c*

Reading messages… (press Ctrl-C to quit)

  1. “psubscribe”

  2. “c*”

  3. (integer) 1

此时可以接收到所有以c开头的频道发来的消息。

tips

redis中的发布订阅系统在某些场景下还是非常好用的,但是也有一些问题需要注意:由于网络在传输过程中可能会遭遇断线等意外情况,断线后需要进行重连,然而这会导致断线期间的数据丢失。

事务


既然redis是一种NoSQL数据库,那它当然也有事务的功能,不过这里的事务和我们关系型数据库中的事务有一点点差异。

redis中事务的用法非常简单,我们通过MULTI命令开启一个事务,如下:

127.0.0.1:6379> MULTI

OK

在MULTI命令执行之后,我们可以继续发送命令去执行,此时的命令不会被立马执行,而是放在一个队列中,如下:

127.0.0.1:6379> set k1 v1

QUEUED

127.0.0.1:6379> set k2 v2

QUEUED

127.0.0.1:6379> set k3 v3

QUEUED

当所有的命令都输入完成后,我们可以通过EXEC命令发起执行,也可以通过DISCARD命令清空队列,如下:

127.0.0.1:6379> EXEC

  1. OK

  2. OK

  3. OK

事务中的异常情况

redis中事务的异常情况总的来说分为两类:

1.进入队列之前就能发现的错误,比如命令输错;

2.执行EXEC之后才能发现的错误,比如给一个非数字字符加1;

那么对于这两种不同的异常,redis中有不同的处理策略。对于第一种错误,服务器会对命令入队失败的情况进行记录,并在客户端调用 EXEC 命令时,拒绝执行并自动放弃这个事务(这个是2.6.5之后的版本做法,之前的版本做法小伙伴可以参考官方文档)。如下:

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> set kv1 v1

QUEUED

127.0.0.1:6379> set k2 v2

QUEUED

127.0.0.1:6379> set k3 v3 3 3

QUEUED

127.0.0.1:6379> set k4 v4

QUEUED

127.0.0.1:6379> EXEC

  1. OK

  2. OK

  3. (error) ERR syntax error

  4. OK

127.0.0.1:6379> keys *

  1. “k4”

  2. “k2”

  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值