DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.
  • DmozDir.org
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!

node怎么用redis怎么做消息队列?

  • node怎么用redis怎么做消息队列?

  • 已被浏览: 106 次2020年09月04日    来源:  https://www.dmozdir.org/
  • node可以使用require方法调用redis,然后使用redis的subscribe以及publish操作来实现消息队列,subscribe订阅一个频道,publish可以向频道广播消息。
    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。

    消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

    Redis如何支持消息队列?

    在新版本的redis v2.6以上以及以上版本开始支持 subscribe 以及 publish 操作, subscribe订阅一个频道,publish可以像频道广播消息. 这个机制最老的应用应该是算是聊天室了.

    Sub/Pub 模式固然很好用,但是同样有一个问题,就是如果有多个人订阅了同一频道,而这个频道的数据只能被一个接收方处理,不能够重复处理,这时该怎么办?

    解决方法有2种,

    1. publish 将数据写入到一个list or sorted list 队列,写完成后开始给终端广播消息,告诉大家,有新的数据等待处理,这个时候,谁能pop到数据,就是谁处理,这个操作是原子性的,也就是说不会被重复处理.

    2. 使用阻塞模式, redis提供了blpop brpop这种操作,也就是一直阻塞一个队列,直到有数据来. 这种模式保证了数据的原子性,而且使应用程序可以支持分布式多台机器部署.

    node使用redis实现消息队列:

    Sub/Pub模式 (sub.js):

    var redis = require("redis");
    var client = redis.createClient(6379, '127.0.0.1', {connect_timeout: 1});
     
    //订阅一个频道
    var sub = function(c) {
        var c = c || 'roban:test:channel';
        client.subscribe(c,function(e){
            console.log('starting subscribe channel:'+c);
        });
    };
     
    //订阅一个频道
    sub();
     
    //处理错误,如果出现错误,或者服务器断开了链接,等待恢复时,继续订阅这个频道
    client.on('error', function(error) {
        console.log(error);
        sub();
    });
     
     
    //订阅处理函数
    client.on('message',function(err,response){
        console.log(response);
    });

    打开redis命令行,输入以下命令:

    publish roban:test:channel hello

    发布这条信息后,sub端会输出以下信息:

    Robans-Pro:node robanlee$ node demo.js 
    starting subscribe channel:roban:test:channel
    hello

    以上就是node怎么用redis怎么做消息队列?的详细内容,更多请关注DMOZ中文网站分类目录其它相关文章!


    以上信息来源于网络,如有侵权,请联系站长删除。

    TAG:node redis

  • 上一篇:liunx怎么启动nodejs部署的应用?
  • 与“node怎么用redis怎么做消息队列?”相关的资讯
  • Redisson 分布式锁实现之前置篇 → Redis 的发布/订阅 与 Lua
  • 90%的人都不知道的Node.js 依赖关系管理(下)
  • Redis学习笔记七:主从集群
  • 图解 Redis | 不就是 AOF 持久化嘛
  • Redis数据持久化—RDB持久化与AOF持久化