IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Redis发布订阅实现原理

    liuchi1993发表于 2017-04-05 23:00:01
    love 0

    发布订阅中使用到的命令就只有三个:PUBLISH,SUBSCRIBE,PSUBSCRIBE

    • PUBLISH 用于发布消息
    • SUBSCRIBE 也叫频道订阅,用于订阅某一特定的频道
    • PSUBSCRIBE 也叫模式订阅,用于订阅某一组频道,使用glob的方式,比如xxx-*可以匹配xxx-a,和xxx-b,xxx-ddd等等

    订阅频道: pubsub_channels

    关联操作:

    • 如果已经存在订阅者,则添加到链表的尾部
    • 如果没有订阅者,那么创建频道,然后添加订阅者

    删除操作:

    • 找到对应的链表,进行删除
    • 如果删除后,链表为空,则删除频道

    模式订阅: pubsub_patterns

    client-7订阅music.*
    client-8订阅book.*
    client-9订阅news.*

    订阅模式:

    • 新建一个pubsubPattern结构
    • 添加到链表的尾部

    退订模式:

    • 查找相应的pubsubPattern然后删除

    发送消息:

    • 将消息发送给channel频道的所有订阅者
    • 遍历整个pubsub_patterns表,查找匹配的模式,如果有一个或者多个模式与频道匹配,将消息发送给pattern模式的订阅者

    相关命令:

    • 查看所有的频道:PUBSUB CHANNELS
    • 查询订阅者的数量:PUBSUB NUMSUB
    • 查询服务器被订阅者的数量:PUBSUB NUMPAT

    相关文章

    • Redis Lua脚本原理
    • 如何使用Jedis操作Redis消息队列
    • Linux下安装Redis
    • Redis初级介绍
    • spring + redis 实现数据的缓存
    • Redis与Java – 数据结构
    • Jedis对redis的操作详解
    • Redis+Spring缓存实例(windows环境,附实例源码及详解)
    • 利用redis + lua解决抢红包高并发的问题
    • Java多线程干货系列(1):Java多线程基础


沪ICP备19023445号-2号
友情链接