• Redis的发布和订阅


    Redis的发布和订阅

    什么是发布和订阅

    redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。

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

    redis的发布和订阅

    客户端可以订阅频道如下图:

    在这里插入图片描述

    当给这个频道发布消息后,消息就会发送给订阅的客户端,如下:

    在这里插入图片描述

    发布和订阅常用命令

    subscribe:订阅一个或者多个频道

    subscribe channel [channel ...]
    
    • 1

    订阅给定的一个或多个频道的信息。注:channel可以是任意

    示例:

    127.0.0.1:6379> subscribe msg1 msg2	# 订阅2个频道
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"	# 返回值的类型:显示订阅成功
    2) "msg1"		# 订阅的频道名字
    3) (integer) 1	# 目前已订阅的频道数量
    1) "subscribe"	# 返回值的类型:显示订阅成功
    2) "msg2"		# 订阅的频道名字
    3) (integer) 2	# 目前已订阅的频道数量
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    publish:发布消息到指定的频道

    publish channel message
    
    • 1

    将信息message发送到指定的频道channel。注:另起一个redis客户端测试

    示例:

    #另起一个redis客户端
    127.0.0.1:6379> publish msg1 hello	#向msg1频道发送hello
    (integer) 1
    
    #第1个redis客户端
    1) "message"	# 返回值的类型:信息
    2) "msg1"		# 来源(从那个频道发送过来)
    3) "hello"		# 信息内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    psubscribe:订阅一个或多个符合给定模式的频道bc

    psubscribe pattern [pattern ...]
    
    • 1

    订阅一个或多个符合给定模式的频道。

    每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。

    示例:

    127.0.0.1:6379> psubscribe news.* tweet.*
    1) "psubscribe"                  # 返回值的类型:显示订阅成功
    2) "news.*"                      # 订阅的模式
    3) (integer) 1                   # 目前已订阅的模式的数量
    1) "psubscribe"
    2) "tweet.*"
    3) (integer) 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    pubsub:查看查看订阅的频道

    pubsub <subcommand> [argument [argument ...]]
    
    • 1

    比如:pubsub 频道名

    示例:

    127.0.0.1:6379> pubsub channels
    1) "msg2"
    2) "msg1"
    
    • 1
    • 2
    • 3

    unsubscribe:退订一个或者多个频道

    unsubscribe channel [channel ...]
    
    • 1

    这个命令在不同的客户端中有不同的表现。

    示例:

    127.0.0.1:6379> unsubscribe msg1
    1) "unsubscribe"	# 返回值的类型:显示退订
    2) "msg1"			# 退订的频道名字
    3) (integer) 0
    
    • 1
    • 2
    • 3
    • 4

    解释:

    nsubscribe命令不能应用于redis-cli客户端中,因为redis-cli运行订阅后,客户端处于阻塞模式(就是不在redis命令行状态中),只能通过Ctrl-C退出订阅模式,而如果使用第三方组件则可以实现这一功能。

    punsubscribe也是使用“punsubscribe news.*”的命令形式来使用的。

  • 相关阅读:
    mysql分表之后怎么平滑上线?
    0基础学习VR全景平台篇 第101篇:企业版功能-子账号分配管理
    洛谷 P1948 / loj 10074 / 一本通 1496【分层图】
    2023长春理工大学计算机考研信息汇总
    【论文笔记】NeRF-RPN: A general framework for object detection in NeRFs
    Apache HTTPD 换行解析漏洞(CVE-2017-15715)
    前端移动web高级详细解析二
    KMP 算法 + 运用前后缀信息 + 案例分析 + 实战力扣题
    ElasticSearch架构
    electron+vue3 实战
  • 原文地址:https://blog.csdn.net/lili40342/article/details/127901009