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/