当前位置: 首页 > wzjs >正文

小装修网站开发费用什么网站做视频

小装修网站开发费用,什么网站做视频,wordpress外链404,天津建站服务我们为了自己实现一个MQ功能,就要深入底层挖掘现有开源产品的实现过程。 Redis 发布订阅底层结构解析 Redis 不存储消息,仅作为“实时中转”;只有订阅者在线时才能收到消息;消息是广播给所有订阅此频道的客户端。 1. 核心数据结…

我们为了自己实现一个MQ功能,就要深入底层挖掘现有开源产品的实现过程。

Redis 发布订阅底层结构解析

Redis 不存储消息,仅作为“实时中转”;只有订阅者在线时才能收到消息;消息是广播给所有订阅此频道的客户端。

1. 核心数据结构:哈希表(dict)+ 链表(链式客户端列表)

1.1 pubsub_channels:频道订阅表(dict)

Redis 使用一个全局字典(哈希表)结构来维护频道与订阅者之间的映射关系:

dict *pubsub_channels; // key: channel name (sds),value: list of clients
  • Key 是频道名称(channel),类型为 Redis 字符串(SDS)
  • Value 是一个客户端链表(list *),保存所有订阅该频道的客户端连接指针
1.2 客户端链表(client list)

对于每个频道,对应一个链表或列表结构(底层用的是 Redis 自身的 list 类型):

typedef struct client {...int fd;                // 客户端 socket fdlist *subscribed_channels; // 客户端自身也记录了订阅了哪些频道...
} client;

这个链表中每个节点是一个 client * 指针,表示一个订阅该频道的活跃客户端连接。

2. 消息发布流程

当执行 PUBLISH channel message 时,Redis 会:

  1. 查找 pubsub_channels[channel],得到订阅该频道的客户端链表
  2. 遍历该链表,对每个客户端执行 addReply(client, message)
  3. 消息会直接写入客户端输出缓冲区,等待发送至客户端 socket

如果客户端网络异常导致写失败,可能会断开连接并清理其订阅记录。

3. 订阅流程

订阅(SUBSCRIBE):
  • Redis 检查频道是否存在于 pubsub_channels
    • 如果存在,将当前客户端加入该频道对应的客户端链表
    • 如果不存在,新建一个键值对:channel -> list,然后加入客户端
      在这里插入图片描述

4、取消订阅流程(UNSUBSCRIBE):

  • Redis 从 pubsub_channels[channel] 的链表中移除该客户端
  • 如果链表为空,则从字典中移除该频道
  • 同时更新客户端的 subscribed_channels 属性

5、 客户端断开连接时的清理机制

当客户端断开连接,Redis 会调用清理逻辑:

pubsubUnsubscribeAllChannels(client *c)

该函数会遍历客户端 subscribed_channels,从所有频道对应的客户端链表中移除该客户端,并删除空频道。

在这里插入图片描述

  • SUBSCRIBE:注册订阅关系。
  • PUBLISH:消息发布,立即广播给在线订阅者。
  • 掉线(连接断开):Redis 会检测到客户端断连,并自动移除其订阅关系。
  • UNSUBSCRIBE:客户端主动取消订阅,Redis 也会移除其订阅记录。

实践过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/546909.html

相关文章:

  • 如何建网站费用多少拼多多开网店怎么开 新手
  • wordpress调用图片上传宁波seo哪家好推广
  • 福建住房与城乡建设网站wordpress自动生成二维码
  • 丹阳做网站创艺装饰公司
  • 网站建设服务宗旨苏州工业园区外国语学校
  • 企业设计网站公司排名wordpress文本自动分页
  • 外汇网站怎么做优外汇网站深圳广告公司名录
  • 关于珠海网站建设的优势个人建网站允许吗
  • 网站建设的竞争力平面设计模板
  • 网站开发中遇到哪些问题怎么做网站海报
  • 网站建设合同模板优秀网站设计流程
  • 确保网站地址没有做301跳转微信小程序怎么做?
  • 外贸建站哪好营销策划公司是干什么的
  • 给公司做网站的费用入什么科目wordpress七牛
  • 寿光网站建设公司管理咨询师考试
  • 网站关键词优化ico网站图标
  • 房地产开发公司是做什么的济南网络优化公司
  • 重庆长寿网站建设网站前端开发流程
  • 有哪些育儿类网站做的比较好衡水网站建设在哪里
  • 免费找客户网站低价网站建设推广优化
  • 上海网站开发技术最好公司电话wordpress信用卡支付宝
  • 莱阳网站制作网站开发德菁
  • 网站进度条特效忽悠别人做商城网站
  • 理解电子商务网站建设与管理flask做网站工具
  • 河北省建设执业资格中心网站怎样让网站被百度收录
  • 仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序网站建设 主要学是么
  • 做网站需要去哪里备案老薛主机wordpress设置
  • 做社区网站用什么程序平台优化
  • 孝感个人网站建设游戏app软件开发多少钱
  • 万网网站备案产品验证未找到该域名授权信息深圳罗湖网站设计