• Redis 发布订阅


    Redis 发布订阅

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

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

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

    在这里插入图片描述

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

    在这里插入图片描述

    Redis 发布订阅的常用命令

    • PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道。
    • PUBSUB subcommand [argument [argument …]] 查看订阅与发布系统状态。
    • PUBLISH channel message 将信息发送到指定的频道。
    • PUNSUBSCRIBE [pattern [pattern …]] 退订所有给定模式的频道。
    • SUBSCRIBE channel [channel …] 订阅给定的一个或多个频道的信息。
    • UNSUBSCRIBE [channel [channel …]] 指退订给定的频道。

    实例

    以下实例演示了发布订阅是如何工作的,需要开启两个 redis-cli 客户端。

    首先,打开一个客户端连接 Redis 服务器,作为订阅者接收消息。在本例子中,创建了一个订阅频道,命名为 RedisChannel:

    redis 127.0.0.1:6379> SUBSCRIBE RedisChannel
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "runoobChat"
    3) (integer) 1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接着,重新开启一个 Redis 客户端,作为发送者发送消息,然后在同一个频道 RedisChannel 发布两次消息,订阅者就能接收消息:

    redis 127.0.0.1:6379> PUBLISH RedisChannel "message1"
    (integer) 1
    redis 127.0.0.1:6379> PUBLISH RedisChannel "message2"
    (integer) 1
    redis 127.0.0.1:6379>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    订阅者的客户端会显示如下消息:

    redis 127.0.0.1:6379> SUBSCRIBE RedisChannel
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "runoobChat"
    3) (integer) 1
     1) "message"
    2) "RedisChannel"
    3) "message1"
     1) "message"
    2) "RedisChannel"
    3) "message2"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    该文章会更新,欢迎大家批评指正。

    推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
    分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
    fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
    TCP/IP,协程,DPDK等技术内容,点击立即学习:
    服务器课程:C++服务器

  • 相关阅读:
    vue3源码学习api-createApp-amount
    serine-PEG-OVA 丝氨酸-聚乙二醇-卵清蛋白,serine-Ovalbumin, 丝氨酸修饰鸡卵白蛋白
    与开发斗智斗勇的日子
    关于python内置数据类型的小练习
    正厚软件|UIAutomator2的使用教程(上)
    ChatGPT:突破写作限制,开启论文写作新境界
    golang爬虫练习-抓取行业信息分类
    用Roslyn玩转代码之一: 解析与执行字符串表达式
    JS逆向之常见编码和混淆加密方式(二)
    [附源码]计算机毕业设计JAVA疫情背景下社区公共卫生服务系统
  • 原文地址:https://blog.csdn.net/qq_41317716/article/details/128179479