Redis - 发布订阅机制详解

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis - 发布订阅机制详解

【1】是什么


进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

联想诸多消息中间件的发布订阅模式,但是Redis大多用来作为基于内存的分布式缓存,企业中消息中间件多用ActiveMQ、RibbitMQ等。


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

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


【2】常用命令


① PSUBSCRIBE pattern [pattern …]


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


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


返回值:接收到的信息。

示例如下:

127.0.0.1:6379> PSUBSCRIBE news*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"     # 返回值的类型:显示订阅成功
2) "news*"          # 订阅的模式
3) (integer) 1      # 目前已订阅的模式的数量
1) "pmessage"       # 返回值的类型:信息
2) "news*"          # 信息匹配的模式
3) "news1"          # 信息本身的目标频道
4) "IT"             # 信息的内容
1) "pmessage"
2) "news*"
3) "news2"
4) "english"

② PUBLISH channel message

将信息 message 发送到指定的频道 channel 。


返回值:接收到信息 message 的订阅者数量。

示例如下:

127.0.0.1:6379> PUBLISH c2 helloredis
(integer) 1  #接收到信息 message 的订阅者数量。


③ SUBSCRIBE channel [channel …]

订阅给定的一个或多个频道的信息。

返回值:接收到的信息。


示例如下:

127.0.0.1:6379> SUBSCRIBE c1 c2 c3
Reading messages... (press Ctrl-C to quit)
1) "subscribe"       # 返回值的类型:显示订阅成功
2) "c1"              # 订阅的频道名字
3) (integer) 1       # 目前已订阅的频道数量
1) "subscribe"
2) "c2"
3) (integer) 2
1) "subscribe"
2) "c3"
3) (integer) 3
1) "message"         # 返回值的类型:信息
2) "c2"              # 来源(从那个频道发送过来)
3) "helloredis"      # 信息内容


实际在工作中,一般采用ActiveMQ和RabbitMQ等消息中间件,并不使用Redis作为消息中间件。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
NoSQL Java Redis
实现基于Redis的分布式锁机制
实现基于Redis的分布式锁机制
|
22天前
|
NoSQL Redis
Redis 发布订阅
10月更文挑战第18天
27 1
Redis 发布订阅
|
1月前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
35 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
1月前
|
设计模式 NoSQL 网络协议
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
36 2
|
5月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
227 0
|
3月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
2月前
|
消息中间件 存储 NoSQL
18)Redis 的发布订阅模型
18)Redis 的发布订阅模型
32 0
|
2月前
|
存储 NoSQL Redis
Redis的RDB快照:保障数据持久性的关键机制
Redis的RDB快照:保障数据持久性的关键机制
52 0
|
2月前
|
存储 缓存 NoSQL
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
86 0