• Redis 消息队列


    Rediis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub),订阅者(sub)接收消息

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

    订阅/发布消息图

    命令 描述
     PSUBSCRIBE pattern [pattern..] 订阅一个或多个符合给定模式的频道
     PUBSUB  subcommand [argument[argument..]]   查看订阅和发布系统状态
     PUBLISH channel message   将信息发生到指定的频道
     PUNSUBSCRIBE [pattern] [pattern..]   退订所有给定模式的频道
     SUBSCRIBE channel [channel...]   订阅给定的一个或多个频道的信息
     UNSUBSCRIBE [channel [channel..]]   推顶给定的频道
    #订阅一个频道
    127.0.0.1:6379> SUBSCRIBE test
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "test"
    3) (integer) 1
    
    #发送端
    127.0.0.1:6379> PUBLISH test hello
    (integer) 1
    127.0.0.1:6379> PUBLISH test "this is test"
    (integer) 1
    
    #查看结果
    127.0.0.1:6379> SUBSCRIBE test
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "test"
    3) (integer) 1
    1) "message"
    2) "test"
    3) "hello"
    1) "message"
    2) "test"
    3) "this is test"
    

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

    每个 Redis 服务器进程都维持着一个表示服务器状态的 redis.h/redisServer 结构, 结构的 pubsub_channels 属性是一个字典, 这个字典就用于保存订阅频道的信息,其中,字典的键为正在被订阅的频道, 而字典的值则是一个链表, 链表中保存了所有订阅这个频道的客户端。

    客户端订阅,就被链接到对应频道的链表的尾部,退订则就是将客户端节点从链表中移除。

    缺点

    1. 如果一个客户端订阅了频道,但自己读取消息的速度却不够快的话,那么不断积压的消息会使redis输出缓冲区的体积变得越来越大,这可能使得redis本身的速度变慢,甚至直接崩溃。
    2. 这和数据传输可靠性有关,如果在订阅方断线,那么他将会丢失所有在短线期间发布者发布的消息。
  • 相关阅读:
    indexDB数据库
    使用数据库实现web留言板
    简易存储读取
    随手记
    小程序三:app对象的使用
    小程序二:配置
    文件上传新方式 files 对象创建
    AJAX 上传多文件
    Uncaught TypeError: Illegal invocation问题解决方法
    nodeJs 复制文件夹及文件
  • 原文地址:https://www.cnblogs.com/diqiyao/p/14697093.html
Copyright © 2020-2023  润新知