节点redis,变量在客户端之间共享?

时间:2015-11-27 09:49:34

标签: node.js redis requirejs

节点的redis的异步性质正在扼杀我。

我看到消息处理从一个客户端切换到另一个客户端, 我认为是独立的变量看起来被其他客户所覆盖。

我不知道为什么两个客户端之间共享变量。

var subscriber = redis.createClient(port, host);
var client = redis.createClient(port, host);
var requirejs = require('requirejs');


requirejs(['my-function'], function(myFunction) {

    subscriber.subscribe('CHANNEL');

    subscriber.on('message', function(channel, message) {
        // If I do multiple jobs, say multiple db inserts
        var data = JSON.parse(message);

        var callback = function(result) {
            client.publish(result);
        };

        myFunction(data, callback);

    });
});
来自client1的

数据与client2不同,但是当我记录它时,会记录来自client2的数据(有时并不总是)

define([
    'module',
    'text!my-script.js',
    'script-fn',
], function(module, myScript, scriptFn) {

    var myFunction = function(data, callback) {
        // I pass data to functions taht use vm.createScript, and requirejs
        // there I print data
        console.log(data); 
    });
});

我使用requirejs / vm,这很复杂我在这里链接我之前的问题

node.js redis server, what happens when there are multiple messages to the subscribed channel?

1 个答案:

答案 0 :(得分:0)

我真的不明白这个问题。

但是在myFunction函数结束时,你没有显式调用回调,因此无法调用client.publish()。如果您运行此代码,我希望消息在控制台中显示,而不在Redis客户端上发布任何内容。