Redis-10-发布订阅

  • 一种消息通信模式

  • 角色

    • 消息发布者:发布消息到频道

    • 频道:消息队列

    • 消息订阅者:从频道接收消息

  • Redis客户端可以订阅任意数量的频道

  • 命令

    • subscribe channel [channel ...]:订阅给定的频道,可以订阅多个

    • publish channel message:发送消息到频道

    消息接收者同步接收消息

    • psubscribe pattern [pattern...]:订阅一个或多个符合指定模式的频道

    • punsubscribe [pattern [pattern ...]]:退订所有给定模式的频道

    • unsubscribe [channel [channel ...]]:退订给定的频道

    • pubsub subcommand [argument [argument ...]]:查看订阅与发布系统状态

  • 原理

    • pubsub.c文件中是Redis的源码

    • 通过subscribe命令订阅一个频道后,redis-server里维护了一个字典

      • key:频道

      • value:订阅了该频道的消息订阅者,一个链表

      此命令的关键点在于将订阅者添加到给定频道的订阅者链表中

    • 通过publish命令发送消息后,redis-server会使用指定的频道作为键值,查找字典中在此键值上的所有订阅了该频道的用户,遍历链表,将消息发送给所有订阅者

  • 应用场景

    • 实时消息系统

    • 实时聊天室

    • 发布、订阅系统

原文地址:https://www.cnblogs.com/LittleSkinny/p/13696927.html