Redis - 发布与订阅

发布与订阅(也叫PUB/SUB)的特点是订阅者(Listener)负责订阅频道(Channel),发送者(Publisher)负责向频道发送二进制字符串消息。

每当有消息被发送至给定频道时,频道的所有订阅者都会收到消息。也可以把频道看作是电台,其中订阅者可以同时收听多个电台,而发送者则可以在任何电台发送消息。

使用Redis订阅与发布功能应该注意。

第一个,于Redis系统的稳定性有关。

对于旧版的Redis,如果一个客户端订阅了某个或某些频道,但它读取消息的速度不够快的话,那么不断挤压的消息会是的Redis输出缓冲区的体积变得越来越大,这可能会导致Redis的速度变慢,甚至直接崩溃。也可能会导致Redis被操作系统强制杀死,甚至导致操作系统本身不可用。

新版的Redis不会出现这种问题,它会自动断开不符合client-output-buffer-limit pubsub配置选项要求的订阅客户端。

第二个,与数据传输的可靠性有关。

任何网络系统在执行操作时都可能会遇上断线情况,而断线产生的连接错误通常会使得网络连接两端中的其中一端进行重新连接。

如果客户端在执行订阅操作的过程中断线,客户端会丢失在断线期间发送的所有消息。

Redis提供了五个发布于订阅的命令。

1、PSUBSCRIBE 命令



用于订阅与给定模式相匹配的所有频道。

每个模式以 ‘*’ 作为匹配符,比如 ‘chat* ’匹配所有chat开头的频道。

new*匹配所有以new开头的频道。

127.0.0.1:6379> PSUBSCRIBE PATTERN [pattern ...]

例如,

127.0.0.1:6379> PSUBSCRIBE NEW*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "NEW*"
3) (integer) 1
1) "pmessage"
2) "NEW*"
3) "NEW1"
4) "HELLO WORLD"
1) "pmessage"
2) "NEW*"
3) "NEW2"
4) "HELLO WORLD TOO"

2、PUBSUB 命令



用于查看订阅与发布系统状态,它由数个不同格式的子命令组成。

127.0.0.1:6379> PUBSUB subcommand [argument [argument ...]]

例如,

127.0.0.1:6379> PUBSUB CHANNELS
(empty list or set)

3、PUBLISH 命令



用于向给定频道发送信息。一次只能向一个频道发送信息。

127.0.0.1:6379> PUBLISH CHANNEL MESSAGE 

例如,

127.0.0.1:6379> PUBLISH NEW "HELLO"
(integer) 1
127.0.0.1:6379> PUBLISH NEW1 "HELLO"
(integer) 2
127.0.0.1:6379> PUBLISH NEW NEW1 "HELLO"
(error) ERR wrong number of arguments for ‘publish‘ command
127.0.0.1:6379> 

4、PUNSUBSCRIBE 命令



用于退订给定的模式,如果执行时没有给定任何模式,那么退订所有模式。

127.0.0.1:6379> PUNSUBSCRIBE [pattern [pattern ...]]

例如,

127.0.0.1:6379> PUNSUBSCRIBE NEW*
1) "punsubscribe"
2) "NEW*"
3) (integer) 0
127.0.0.1:6379> PUNSUBSCRIBE mychannecl
1) "punsubscribe"
2) "mychannecl"
3) (integer) 0
127.0.0.1:6379> PUNSUBSCRIBE mychannel
1) "punsubscribe"
2) "mychannel"
3) (integer) 0

5、SUBSCRIBE 命令



用于订阅给定的一个或多个频道。

127.0.0.1:6379> SUBSCRIBE channel [channel ...]

例如,

127.0.0.1:6379> SUBSCRIBE NEW1 NEW2 NEW3
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "NEW1"
3) (integer) 1
1) "subscribe"
2) "NEW2"
3) (integer) 2
1) "subscribe"
2) "NEW3"
3) (integer) 3

6、UNSUBSCRIBE 命令



用于退订给定的一个或多个频道,如果执行时没有给定任何频道,那么退订所有频道。

127.0.0.1:6379> UNSUBSCRIBE [channel [channel ...]]

例如,

127.0.0.1:6379> UNSUBSCRIBE NEW*
1) "unsubscribe"
2) "NEW*"
3) (integer) 0
时间: 2024-11-03 21:53:23

Redis - 发布与订阅的相关文章

文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个redis的订阅者何消费者. 定义一个类: import redis class Redis_helper(): def __init__(self): self.__conn = redis.Redis(host='192.168.11.87') #创建一个连接 def pub(self, mes, c

Python redis 发布和订阅

发布和订阅 类似于RSS发布者:服务器订阅者:Dashboad和数据处理看下面代码:类文件名:monitor.py: #!/usr/bin/python # -*- coding: utf-8 -*- __author__ = 'gaogd' import redis class RedisHelper:     def __init__(self):         self.__conn = redis.Redis(host='192.168.10.12', port=6379, passw

redis发布与订阅

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似.pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合.Redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能.订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel).当发布者通过publish命令向

小贝_redis高级应用-发布与订阅

redis高级应用-发布与订阅 一.发布与订阅(pub/sub)功能 二.发布与订阅(pub/sub)机制 三.redis发布与订阅(pub/sub)的实现 一.发布与订阅(pub/sub)功能 Pub/Sub功能(meansPublish, Subscribe)即发布及订阅功能.基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件:发布者(如服务

RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式.我想大家即使没有使用过,也已经耳熟能详了. 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪. 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式.当然如果只将报

C# Redis系列(三)-Redis发布订阅及客户端编程

发布订阅模型 Redis中的发布订阅 客户端编程示例 0.3版本Hredis 发布订阅模型 在应用级其作用是为了减少依赖关系,通常也叫观察者模式.主要是把耦合点单独抽离出来作为第三方,隔离易变化的发送方和接收方. 发送方:只负责向第三方发送消息.(杂志社把读者杂志交给邮局) 接收方:被动接收消息.(1:向邮局订阅读者杂志,2:门口去接邮过来的杂志) 第三方作用是:存储订阅杂志的接收方,并在杂志过来时送给接收方. (邮局) C#示例,发送方把杂志放到邮局里面: if (QA.AddBug()) E

Redis 发布订阅模型

Redis订阅端: redis 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1 现在,两个客户端都发布在同一个通道名redisChat消息及以上的订阅客户端接收消息. Redis 发布端 redis 127.0.0.1:6379> PUBLISH redis

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 . client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 实例 以下实例演示了发布订阅是如何工作的.在我们实例中我们创建了订阅频道名为 redi

Redis 发布/订阅模式

一.命令简介 1.PSUBSCRIBE 订阅一个或多个符合给定模式的频道.2.PUBLISH 将信息 message 发送到指定的频道 channel .3.PUBSUB 是一个查看订阅与发布系统状态的内省命令, 它由数个不同格式的子命令组成4.PUNSUBSCRIBE 指示客户端退订所有给定模式.5.SUBSCRIBE 订阅给定的一个或多个频道的信息.6.UNSUBSCRIBE 指示客户端退订给定的频道. 二.例子 1.订阅msg 2.发送信息 三.代码实现 using Newtonsoft.