【问题标题】:is redis on node.js synchronous or asynchronous?node.js 上的 redis 是同步的还是异步的?
【发布时间】:2016-03-01 08:47:51
【问题描述】:
subscriber.subscribe('CHANNEL');

subscriber.on('message', function(channel, message) {
    // If I do multiple jobs, say multiple db inserts 
    insert1;
    insert2;
}

以下是可能的操作顺序吗?

insert1
insert1
insert2
insert2

还是保证一直都是下面的序列?

insert1
insert2
insert1
insert2

【问题讨论】:

    标签: node.js asynchronous redis


    【解决方案1】:

    假设你使用的是node_redis客户端,是的,它是异步的。

    订阅者无论如何都需要自己的 Redis 连接,因此即使 insert1 和 insert2 操作针对同一个 Redis 实例,您也无法保证操作的顺序。

    请注意,在实践中,您不会编码:

    insert1;
    insert2;
    

    而是:

    insert1( function() {
        insert2( function() {
            callback()
        });
    });
    

    ...至少如果您需要检查插入是否正常。

    【讨论】:

    • 谢谢。你能回答我的相关问题stackoverflow.com/questions/33954599/… 吗? (第 2 步问题)
    • insert1; insert2; 会阻塞 IO 吗?还是在 redis 模块中的单独线程上工作?
    • 它不阻塞,在单独的线程中不起作用。插入1;插入 2 ;将只发送两个插入而不等待完成,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2020-02-21
    • 2013-02-25
    • 2012-12-30
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多