redis消息订阅

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: redis消息订阅

一、概述

发布/订阅模式包含两种角色,分别是发布者和订阅者。发布者可以向指定的频道发送消息;订阅者可以订阅一个或者多个频道,所有订阅此频道的订阅者都会收到此消息,图示

二、原理

底层是通过字典(图中的publish_channel)实现的,这个字典就用于保存订阅频道的信息:字典的键为正在被订阅的频道,而字典的值则是一个链表,链表中保存了所有订阅这个频道的客户端。

在下图展示的这个pubsub_channels的示例中,client2、client5、client1就订阅了channel1,而其他频道也被别的客户端所订阅

三、实现

常用命令

序号

命令及描述

1

PSUBSCRIBE pattern [pattern ...]

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

2

PUBSUB subcommand [argument [argument ...]]

查看订阅与发布系统状态。

3

PUBLISH channel message

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

4

PUNSUBSCRIBE [pattern [pattern ...]]

退订所有给定模式的频道。

5

SUBSCRIBE channel [channel ...]

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

6

UNSUBSCRIBE [channel [channel ...]]

指退订给定的频道。

这里在cmd演示,如果是代码,原理一样

首先打开一个cmd订阅频道

redis 127.0.0.1:6379> SUBSCRIBE redisChat #创建了订阅频道名为 redisChat:

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "redisChat"

3) (integer) 1


再打开一个cmd发消息


redis 127.0.0.1:6379> PUBLISH redisChat "Hello,Redis"

(integer) 1

redis 127.0.0.1:6379> PUBLISH redisChat "Hello,hahaha"

(integer) 1


查看订阅者窗口收到消息


# 订阅者的客户端会显示如下消息

1) "message"

2) "redisChat"

3) "Hello,Redis"

1) "message"

2) "redisChat"

3) "Hello,hahaha"


相关实践学习
基于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
相关文章
|
1月前
|
NoSQL Redis
【Redis】Redis的发布和订阅
【1月更文挑战第18天】【Redis】Redis的发布和订阅
|
7月前
|
消息中间件 NoSQL Kafka
【Redis 系列】redis 学习九,Redis 的发布和订阅是咋玩的
【Redis 系列】redis 学习九,Redis 的发布和订阅是咋玩的
|
1月前
|
消息中间件 NoSQL PHP
Laravel实现redis发布-订阅
Laravel实现redis发布-订阅
39 0
|
8月前
|
存储 NoSQL Redis
【Redis源码】发布与订阅(六)
【Redis源码】发布与订阅(六)
54 0
|
1月前
|
NoSQL 安全 Unix
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(中)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
25 0
|
19天前
|
存储 缓存 NoSQL
Redis与数据库同步指南:订阅Binlog实现数据一致性
本文由开发者小米分享,探讨分布式系统中的一致性问题,尤其是数据库和Redis一致性。文章介绍了全量缓存策略的优势,如高效读取和稳定性,但也指出其一致性挑战。为解决此问题,提出了通过订阅数据库的Binlog实现数据同步的方法,详细解释了工作原理和步骤,并分析了优缺点。此外,还提到了异步校准方案作为补充,以进一步保证数据一致性。最后,提醒在实际线上环境中需注意日志记录、逐步优化和监控报警。
58 3
|
1月前
|
存储 NoSQL 调度
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(下)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
20 0
|
1月前
|
存储 NoSQL API
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(上)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
28 1
|
11月前
|
NoSQL 前端开发 Java
redis的发布/订阅(命令、普通工程、springboot实现)
小美老师给五年级三班上数学课的时候,实现给所在班级进行实时推送数学课程的活动(广播通信)
|
1月前
|
NoSQL Java Redis
Redis的发布-订阅模式是什么?它的应用场景是什么?
Redis的发布-订阅模式是什么?它的应用场景是什么?
68 0