Redis七(发布订阅)
发布与订阅(pub/sub)
介绍
Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式, 这个功能提供两种信息机制, 分别是订阅/发布到频道和订阅/发布到模式
订阅者可以订阅一个或多个频道,发布者向一个频道发送消息后,所有订阅这个频道的订阅者都将收到消息,而发布者也将收到一个数值,这个数值是收到消息的订阅者的数量。订阅者只能收到自它开始订阅后发布者所发布的消息,而之前发布的消息是收不到的。
运行原理:
Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。

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

Python下实现Redis的发布和订阅
Demo如下:
redisPubSub.py
#用来连接redis server并封装了发布与订阅的功能
import redis class RedisPubSubHelper(): def __init__(self):
# redis连接对象
self.__conn = redis.Redis(host='192.168.49.130') def publish(self, message, channel):
# redis对象的publish方法(发布)
# 往指定的频道中发布信息
self.__conn.publish(channel, message)
return True def subscribe(self, channel):
# 返回了一个发布订阅的对象
pub = self.__conn.pubsub()
# 订阅到指定的频道上
pub.subscribe(channel)
pub.parse_response()
return pub
订阅者:
#!/usr/bin/env/ python
# -*-coding:utf-8 -*-
import redisPubSub # 创建一个连接redis的对象(使用发布与订阅模式的redis对象)
r = redisPubSub.RedisPubSubHelper() #创建发布订阅的对象
redis_sub=r.subscribe('fm104.9')# 指定订阅频道
while True:
# 接收频道中的内容,代码会阻塞到这里,直到收到消息
msg=redis_sub.parse_response()
print(msg)
发布者:
#!/usr/bin/env/ python
# -*-coding:utf-8 -*-
import redisPubSub # 创建一个连接redis的对象(使用发布与订阅模式的redis对象)
r = redisPubSub.RedisPubSubHelper()
# 向指定的频道发布消息
r.publish('hello world', 'fm104.9')
更多参见:https://github.com/andymccurdy/redis-py/
http://doc.redisfans.com/
Redis七(发布订阅)的更多相关文章
- Redis(七):Redis的发布订阅
Redis的发布订阅导航目录: 是什么 命令 案例 是什么 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. 订阅/发布消息图 命令 案例 先订阅后发布后才能收到消息,1 ...
- redis的发布订阅模式
概要 redis的每个server实例都维护着一个保存服务器状态的redisServer结构 struct redisServer { /* Pubsub */ // 字典,键为频道, ...
- StackExchange.Redis 使用-发布订阅 (二)
使用Redis的发布订阅功能 redis另一个常见的用途是发布订阅功能 . 它非常的简单 ,当连接失败时 ConnectionMultiplexer 会自动重新进行订阅 . ISubscriber s ...
- .net core 使用Redis的发布订阅
Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心.接下来介绍一下.net core 使用 ...
- redis的发布订阅模式pubsub
前言 redis支持发布订阅模式,在这个实现中,发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个 ...
- java实现 redis的发布订阅(简单易懂)
redis的应用场景实在太多了,现在介绍一下它的几大特性之一 发布订阅(pub/sub). 特性介绍: 什么是redis的发布订阅(pub/sub)? Pub/Sub功能(means Publ ...
- spring boot 使用redis进行发布订阅
异步消息的方式有很多,这篇博客介绍如何使用redis进行发布订阅, 完成这个示例只需要三个文件 1.redis消息监听配置 @Configuration public class RedisListe ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- redis的发布订阅、持久化存储、redis的主从复制
redis的发布订阅 1. 创建redis配置文件 vim /opt/redis_conf/reids-6379.conf mkdir /data/6379 redis-server redis-6 ...
- redis 实现发布订阅的功能
redis 除了作为缓存的功能外还可以用作消息中间件的功能,这片博客主要是介绍一下 redis 整合spring 实现消息的发布和订阅功能: 1:redis依赖,依赖两个包,redis 包, spri ...
随机推荐
- centos 系统管理维护指南
# centos 系统管理维护指南 centos系统是服务器的首选系统,系统运维支持需要的内容汇总整理如下. ### 系统管理------------------------------ 查看系统版本 ...
- uGUI ScrollView
Scroll View + Grid Layout Group 滑动列表,与NGUI类似 ScrollView上所需组件:Scroll Rect + Mask + Image.Scroll Rect指 ...
- JQuery File Upload 插件 出现 “empty file upload result” 错误的解决方案。
本例中采用的是 JQuery File Upload + ASP.NET 的方式, Google了大半天基本没有找到合理的解决方案,倒是在 NodeJS的一遍博客中找到了灵感:http://www.i ...
- chpasswd 更简单的更改密码的方式
[root@m01 .ssh]# useradd test[root@m01 .ssh]# echo "test:123"|chpasswd Linux命令:chpasswd 批量 ...
- jQuery Colorbox使用教程
jQuery Colorbox是一款弹出层,内容播放插件,效果极佳,最关键的是大小只有10KB,当然我主要是用来弹出图片啦,(之前介绍过jquery Fancybox插件,个人很喜欢).jQuery ...
- datagrid多复选框
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Ch ...
- tomcat修改默认端口
1.webserver: tomcat2.version: Apache Tomcat/7.0.293.operation: 修改默认端口 3.1 修改tomcat目录下的/conf/server ...
- 运行jsp需要安装_______Web服务器。
运行jsp需要安装_______Web服务器. A.Apache B.tomcat C.WebLogic D.IIS 解答:BC Apache是PHP程序运行的服务器,IIS是.net程序运行的服务器 ...
- jdk从1.8降到1.7的办法
jdk从1.8降到1.7的办法 正常情况下,JDK的升降级只需更改环境变量即可,可是到了1.8版本,oracle使了一点小手段--在系统Path中添加一条变量C:/ProgramData/Oracle ...
- 复合文档(Compound Document)读写栗子
复合文件是把磁盘文件系统的管理方式移植到文件中---复合文件. 复合文档是由 Windows 系统通过 COM 提供的, 它能完成像 Windows 目录结构一样复杂的文件结构的存取:提示一下 Win ...