首页 > 数据库 >Redis笔记(六):Redis订阅发布

Redis笔记(六):Redis订阅发布

时间:2023-05-20 22:15:12浏览次数:35  
标签:订阅 ... pattern Redis 笔记 链表 channel

Commands

  • SUBSCRIBE channel [channel ...]
  • PUBLISH channel message
  • UNSUBSCRIBE [channel [channel ...]]
  • PSUBSCRIBE pattern [pattern ...] 正则订阅
  • PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态
  • PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道

原理

Redis是使用C实现的,通过分析 Redis 源码里的pubsub.c文件,了解发布和订阅机制的底层实现,籍此加深对 Redis 的理解。

Redis 通过 PUBLISH、SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能。

通过 SUBSCRIBE 命令订阅某频道后,redis-server 里维护了一个字典,字典的键就是一个个channel,而字典的值则是一个链表,链表中保存了所有订阅这个 channel 的客户端。SUBSCRIBE 命令的关键,就是将客户端添加到给定 channel 的订阅链表中。

通过 PUBLISH 命令向订阅者发送消息,redis-server 会使用给定的频道作为键,在它所维护的 channel 字典中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者。
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个kev值进行消息发布及消息阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

标签:订阅,...,pattern,Redis,笔记,链表,channel
From: https://www.cnblogs.com/Bota5ky/p/17417871.html

相关文章

  • 【≅Redis】BitMap类型介绍
    BitMap(2.2版新增)Bitmap,即位图,是一串连续的二进制数组(0和1),可以通过偏移量(offset)定位元素。BitMap通过最小的单位bit来进行0|1的设置,表示某个元素的值或者状态,时间复杂度为O(1)。由于bit是计算机中最小的单位,使用它进行储存将非常节省空间,特别适合一些数据量大且使用二值统计......
  • CSS基础知识笔记
    CSS(CascadingStyleSheets)指层叠样式表,是一种描述如何显示HTML元素的语言。参考教程:https://www.w3school.com.cn/css/index.aspCSS语法CSS规则集(rule-set)由选择器和声明块组成:CSS选择器元素选择器p{text-align:center;color:red;}id选择器注意:i......
  • 算法学习笔记合集
    字符串哈希:哈希学习笔记KMP:KMP学习笔记图论分层图最短路:分层图最短路LCA:P3379最近公共祖先模板数据结构线段树:线段树学习笔记ST表:P3865ST表树状数组:P3374树状数组1DP树上背包:P2014选课(树上背包)杂项搜索:搜索学习笔记离散化:离散化学习笔记......
  • 五月读书笔记一《人件集》
    《人件集》读书笔记一:一.在决策制定时,团队领导不仅要从宏观上建立起一种协作的气氛,而且还要在微观上起到领导的作用。让最终的解决办法体现所有成员的智慧,包括经验、创造性以及各种思想,它应该不仅仅是个人贡献的一个均衡产品,而是一个真正综合了各成员最优贡献的产品。领导要采......
  • 阅读笔记:Sybilla DLT任务重启判定系统
    论文简介Sibylla:ToRetryorNotToRetryonDeepLearningJobFailure这篇论文发表在ATC2022上,主题是提出了一个基于半监督学习的深度学习训练(DLT)作业调度的系统,该系统减少了GPU集群中不必要的作业重启操作。背景知识深度学习作业调度中的错误类型与处理机制目前的大规......
  • cmd python pip 笔记
    ......
  • 《人月神话》阅读笔记3
    《人月神话》是一本软件工程经典著作,作者是著名的计算机科学家弗雷德里克·布鲁克斯。本书主要探讨了计算机软件开发的几个核心问题,如时间与效率、团队协作、软件设计和管理等等,并提出了一些关于软件开发管理的思考和经验。本书的关键思想之一是“人月神话”,也就是在软件开发中添......
  • ABBAC900F学习笔记301:使用securityLock做解除联锁按钮的权限限制功能
    这一篇学习笔记,我在新浪博客记录过,因为担心丢失,在这里再记录一遍,新浪博客地址ABBAC900F学习笔记301:使用securityLock做解除联锁按钮的权限限制功能_来自金沙江的小鱼_新浪博客(sina.com.cn) 这个学习练习,实际上还是在以前学习基础上做的,没有多少新意,权当复习一遍吧。在虚拟......
  • Redis笔记(四):Java集成和配置
    JedisJedis是Redis官方提供的Java客户端,用于在Java应用程序中连接、操作Redis,它提供了与Redis通信的API,简化了Java开发者与Redis的交互流程。JedisGithubReadme:https://github.com/redis/jedis#getting-startedSpringBoot在SpringBoot2.x之后,原来使用的jedis被替换成了lettc......
  • 【学习笔记】(8) 拉格朗日插值
    拉格朗日插值首先一个定理:\(n\)个点(横坐标不同)唯一确定一个最高\(n-1\)次的多项式。那么,\(n\)个点的点值\((x_i,y_i)\)可以唯一确定一个\(n−1\)次多项式(为了叙述方便,本文中所有“\(k\)次多项式”“\(k\)次函数”的最高次项系数可以为0)。拉格朗日插值就是用......