## 发布订阅
* 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
* 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
* 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
* 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
* 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来
## 消息的格式
* 推送消息的格式包含三部分
* part1:消息类型,包含三种类型
* subscribe,表示订阅成功
* unsubscribe,表示取消订阅成功
* message,表示其它终端发布消息
* 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
* 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
* 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
## 命令
* 订阅
~~~
SUBSCRIBE 频道名称 [频道名称 ...]
~~~
* 取消订阅
* 如果不写参数,表示取消所有订阅
~~~
UNSUBSCRIBE 频道名称 [频道名称 ...]
~~~
* 发布
~~~
PUBLISH 频道 消息
~~~
- mysql
- 1.创建库和表
- 1.1.数据库简介
- 1.2.安装管理
- 1.3.数据完整性
- 1.4.命令脚本操作
- 2.查询
- 2.1.条件
- 2.2.聚合
- 2.3.分组
- 2.4.排序
- 2.5.分页
- 3.高级
- 3.1.关系
- 3.2.连接
- 3.3.自关联
- 3.4.子查询
- 3.5.内置函数
- 3.6.视图
- 3.7.事务
- 4.与python交互
- 4.1.交互类型
- 4.2.增改删
- 4.3.查询
- 4.4.封装
- 4.5.用户登录
- Nosql简介
- mongodb
- 1.基本操作
- 1.1.环境安装
- 1.2.数据库操作
- 1.3.集合操作
- 1.4.数据类型
- 1.5.数据操作
- 1.6.数据查询
- 1.6.1.Limit与Skip
- 1.6.2.投影
- 1.6.3.排序
- 1.6.4.统计个数
- 1.6.5.消除重复
- 2.高级操作
- 2.1.聚合aggregate
- 2.1.1.$group
- 2.1.2.$match
- 2.1.3.$project
- 2.1.4.$sort
- 2.1.5.$limit,$skip
- 2.1.6.$unwind
- 2.2.安全
- 2.3.复制(副本集)
- 2.4.备份和恢复
- 2.5.与python交互
- redis
- 1.基本配置
- 2.数据操作
- 2.1.string
- 2.2.键命令
- 2.3.hash
- 2.4.list
- 2.5.set
- 2.6.zset
- 4.高级
- 4.1.发布订阅
- 4.2.主从配置
- 5.与python交互
- 6.login登陆完善