redis消息订阅

一、概述

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

redis消息订阅_第1张图片

二、原理

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

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

redis消息订阅_第2张图片

三、实现

常用命令

序号

命令及描述

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,数据库,缓存)