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

Redis(03)——发布订阅

基础命令


基于频道

  1. publish channel message:将信号发送到指定的频道
  2. pubsub subcommand [argument [argyment]]:查看订阅或发布系统状态
  3. subscribe channel [channel]:订阅一个或多个频道的信息
  4. unsubscribe [channel [channel]]:退订指定的频道,若没有指定频道,则默认退订所有频道

基于模式

  1. psubcribe pattern [pattern]:订阅一个或多个符合给定模式的频道
  2. punsubscribe [pattern [pattern]]:退订所有给定模式的频道,若pattern未指定,则订阅的所有模式都会被退订,否则只退订指定的订阅模式

基于频道(Channel)的发布/订阅



底层原理

  1. 频道订阅:订阅频道时先检查字段内部是否存在,不存在则为当前频道创建一个字典且创建一个链表存储客户端id,否则直接将客户端id插入到链表中
  2. 取消频道订阅:取消时将客户端id从对应的链表中删除,如果删除之后链表已经是空链表了,则将会把这个频道从字段中删除
  3. 发布:首先根据channel定位到字典的键,然后将信息发送给字典值链表中的所有客户端

基于模式(pattern)的发布/订阅

通配符中?表示1个占位符,_表示任意个占位符(包括0),?_表示1个以上占位符

当有信息发送到com.ahead.thread频道时,信息除了发送给client4和client5之外,还会发送给订阅com.ahead.*频道模式的client x和client y

底层原理

  1. 模式订阅:新增一个pubsub_pattern数据结构添加到链表的最后尾部,同时保存客户端ID
  2. 取消模式订阅:从当前的链表pubsub_pattern结构中删除需要取消的pubsubPattern结构
http://www.lryc.cn/news/302848.html

相关文章:

  • ⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)
  • ECMAScript 6+ 新特性 ( 二 )
  • JS游戏项目合集【附源码】
  • React中hooks使用限制及保存函数组件状态
  • 用git命令来上传项目到GitHub我自己的仓库
  • .NET有哪些微服务框架
  • uniapp中打开蓝牙需要哪些权限
  • virtualbox虚拟机运行中断,启动报错“获取 VirtualBox COM 对象失败”
  • 【JVM篇】什么是运行时数据区
  • Jetpack 之Glance+Compose实现一个小组件
  • 实时矢量搜索如何彻底改变各行各业?
  • 【Linux】指令 【scp】
  • 文件IO,目录IO的学习
  • leetcode(动态规划)53.最大子数组和(C++详细解释)DAY12
  • BUGKU-WEB bp
  • 代码的复用——Mixin使用例子
  • easyx 枪声模拟器
  • python 与 neo4j 交互(py2neo 使用)
  • Python基础笔记11
  • vulhub中Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
  • 智慧城市驿站:智慧公厕升级版,打造现代化城市生活的便捷配套
  • 大模型爆款应用fabric_构建优雅的提示
  • js 对象属性描述符详解
  • 文件操作QFile
  • 【Langchain】+ 【baichuan】实现领域知识库【RAG】问答系统
  • Anaconda、conda、pip、virtualenv的区别
  • 【数据结构】每天五分钟,快速入门数据结构(一)——数组
  • NBlog个人博客部署维护过程记录 -- 后端springboot + 前端vue
  • WireShark 安装指南:详细安装步骤和使用技巧
  • PyTorch detach():深入解析与实战应用