node.js - Node redis,变量在客户端之间共享?

标签 node.js redis requirejs

node 的 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?

最佳答案

我不太明白这个问题。

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

关于node.js - Node redis,变量在客户端之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954599/

相关文章:

node.js - 使用 Express 中间件进行每个请求模块配置?

node.js - 如何仅返回值而不是键:value pairs from mongodb in nodejs

php - 需要以更快的方式将用户信息存储到 Redis 中,正确的命令是什么? (为了获得更好的表现)

redis - Redis 3.4及以上版本如何在master/slave config中配置来解决Sentinel running on protected mode的错误?

javascript - RequireJS:模块函数是在每次导入模块时执行还是仅在第一次导入时执行?

node.js - 如何捕获 Node 中的 psql 错误?

redis - 你如何处理失败的 redis 连接

javascript - 为什么串联的 RequireJS AMD 模块需要加载程序?

javascript - 在不明确要求 Assets 的情况下将 webpack 与 jade-loader 一起使用

node.js - 等价于Golang中的readUIntLE?