redis客户端获取map的值_Redis 实战 —— 05. Redis 其他命令简介

发布与订阅 P52

Redis 实现了发布与订阅(publish/subscribe)模式,又称 pub/sub 模式(与设计模式中的观察者模式类似)。订阅者负责订阅频道,发送者负责向频道发送二进制字符串消息。每当有消息被发送至给定频道时,频道的所有订阅者都会接收到消息。

发布与订阅命令 P52

c8476a5d321ce95cd25c32eb757dbb5b.png

相关演示代码如下:

// 执行发布订阅相关操作(注意:pubSubConn 中的 Conn 对象不能是 conn 对象,即必须建立两个不同的连接)
func executePubSubOperation(pubSubConn redis.PubSubConn, conn redis.Conn) {
    
    // 监听频道消息并输出
    go func() {
    
        for ; ; {
    
            switch result := pubSubConn.Receive().(type) {
    
            case redis.Message:
                // byte 转 string
                resultMap := map[string]string  {
    
                    "Channel": result.Channel,
                    "Pattern": result.Pattern,
                    "Data": string(result.Data),
                }
                handleResult(resultMap, nil)
            case redis.Subscription:
                handleResult(result, nil)
            }

        }
    }()

    // 订阅两个频道(由于 Subscribe 内没有执行 Receive,所以只有 error,没有错误时就输出 nil)
    // 订阅者收到相应的消息订阅信息,分别输出 -> {subscribe channel_1 1} 和 {subscribe channel_2 2}
    handleResult(nil, pubSubConn.Subscribe("channel_1", "channel_2"))
    // 订阅两个模式,分别以 _1 和 g_2 为结尾的频道 (由于 PSubscribe 内没有执行 Receive,所以只有 error,没有错误时就输出 nil)
    // 订阅者收到相应的消息订阅信息,分别输出 -> {psubscribe *_1 3} 和 {psubscribe *g_2 4}
    handleResult(nil, pubSubConn.PSubscribe("*_1", "*g_2"))

    time.Sleep(time.Second)

    // 发布消息到频道 channel_1,输出 -> 2,两个订阅者接收到消息
    // 订阅者分别输出 -> map[Channel:channel_1 Data:channel1 Pattern:] 和 map[Channel:channel_1 Data:channel1 Pattern:*_1]
    handleResult(conn.Do("PUBLISH", "channel_1", "channel1"))
    // 发布消息到频道 channel_2,输出 -> 1,一个订阅者接收到消息
    // 订阅者输出 -> map[Channel:channel_2 Data:channel1 Pattern:]
    handleResult(conn.Do("PUBLISH", "channel_2", "channel1"))

    // 退订两个频道(由于 Subscribe 内没有执行 Receive,所以只有 error,没有错误时就输出 nil)
    // 订阅者收到相应的消息退订信息,分别输出 -> {unsubscribe channel_1 3} 和 {unsubscribe channel_2 2}
    handleResult(nil, pub
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值