Redis 学习笔记(十三)Redis订阅发布
Posted Adorable_Rocy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 学习笔记(十三)Redis订阅发布相关的知识,希望对你有一定的参考价值。
前言:Redis发布订阅(pub/sub)是一种消息通信模式:发送者发送消息到频道,订阅者从频道中接收消息
1.订阅/发布消息
1.简单流程图
补充:
- 发布者不需要管是什么人订阅了,只需将消息发送到频道里
- 订阅者也不需要知道什么人发布的,只需订阅感兴趣的频道,接收感兴趣的消息
- 频道就像当于一个消息队列,每当发布者将数据发送到队列里,订阅者就会从队列中一一获取到数据
订阅相关命令:
命令 | 描述 |
---|---|
pubsub subcommand | 查看订阅与发布系统状态 |
publish channel message | 将消息发送到给定的频道 |
subscribe channel | 订阅给定的一个或多个频道的信息 |
unsubscribe channel | 退订给定的频道 |
psubscribe pattern | 订阅一个或多个符合给定模式的频道 |
punsubscribe pattern | 订阅一个或多个符合给定模式的频道 |
PUBSUB CHANNELS | 查看当前有多少频道被订阅 |
2. 模拟订阅、发布(准备两个client)
- 发布
[root@localhost bin]# redis-cli -p 6379
# 发送端将消息发送到频道zhangsan中去
127.0.0.1:6379> PUBLISH zhangsan "hello"
(integer) 1
- 订阅
[root@localhost bin]# redis-cli -p 6379
# 订阅了一个张三的频道
127.0.0.1:6379> SUBSCRIBE zhangsan
127.0.0.1:6379> SUBSCRIBE zhangsan
Reading messages... (press Ctrl-C to quit)
1) "message"
2) "zhangsan" # channel
3) "hello" # msg
- 原理:
- 通过SUBSCRIBE命令订阅某频道后,redis-server里维护了一个字典,字典的键就是一个个频道,而字典的值则是一个链表,链表中保存了所有订阅这个channel的客户端。SUBSCRIBE命令的关键,就是将客户端添加给定channel的订阅链表中
- 通过PUBLISH命令向订阅者发送消息,redis-server会使用给定的频道作为键,在它所维护的channel字典中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者
- Pub/Sub从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到想应的消息
关于订阅,一般在关注、动态、聊天等系统使用较多
以上是关于Redis 学习笔记(十三)Redis订阅发布的主要内容,如果未能解决你的问题,请参考以下文章