• 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++服务器

  • 相关阅读:
    iOS UIImage和CVPixelBuffer互相转换
    【目标检测】——PE-YOLO精读
    Linux学习笔记-Docker安装配置及使用教程
    【Java】猫和狗接口版本思路分析
    【设计模式】单例模式 Singleton Pattern
    在Spring Boot应用中实现阿里云短信功能的整合
    荧光标记氨基酸:荧光标记L-丙氨酸乙酯盐酸盐,L-Alanine ethyl ester hydrochloride labeled
    都2023年金九银十了,这三个项目你还没有?你简历上项目经验写啥
    vue考试系统后台管理项目-接口封装调用
    java基础-集合-ConcurrentHashMap源码学习
  • 原文地址:https://blog.csdn.net/qq_41317716/article/details/128179479