干货 | Redis 实现发布订阅原理与实践

本文深入探讨Redis的发布/订阅模式,包括频道和模式的订阅与退订原理,以及实际应用案例,帮助理解其在消息传递中的作用,适用于后端开发和面试准备。
摘要由CSDN通过智能技术生成

写在前面

Redis 是完全开源的,高性能的 key-value 数据库,受到越来越多的业务场景应用。对于"发布/订阅"的消息模式,大家也许都比较了解,但是其实现原理及应用是否还存在模糊呢?

今天计划同大家一起,深入浅出讲透 Redis 发布订阅,尽量通俗易懂,让大家轻松上手。

发布/订阅模式

关于发布/订阅模式

在软件架构中,发布/订阅是一种消息模式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者),而是通过消息通道广播出去,让订阅该消息主题的订阅者消费到。

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分:发布者(Publisher),订阅者(Subscriber)和频道(Channel)。发布/订阅者模式最大的特点就是实现了松耦合。

Redis发布订阅分类

  • 频道的发布订阅

  • 模式的发布订阅

下面来分别详细阐述一下其实现原理及应用。

频道的发布订阅

实现原理

Redis将所有频道的订阅关系都保存在服务器状态的 pubsub_channels 字典,字典的键是某个被订阅的频道,而对应值则是一个链表,链表里记录了所有订阅这个频道的客户端。

struct redisServer{
      //...
    // 保存所有频道订阅关系    dict *pubsub_channels;        //...}
 

一个pubsub_channels字典示例如下:

  • client-1、client-2、client-3 三个客户端正在订阅 “article.tech” 频道

  • 客户端 client-4 正在订阅 “article.mysql” 频道

  • client-5、client-6 两个客户端正在订阅 “article.redis” 频道

订阅频道

相关命令:

SUBSCRIBE channel [channel …]

当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候,这个客户端与被订阅频道之间就建立起了一种订阅关系。

建立订阅关系执行分两种情况:

1)该

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值