Redis / Node.js – 2个客户端(1个pub / sub)导致写入问题

试图创build两个客户端; 一个是pub / sub,另一个是标准连接。 这不可能吗? 必须有一种方法来抽象这个工作:)基本上,如果我运行test.js后get key一个get key ,我看到的只是'valueBefore'。 输出:

 node test.js Reply: OK /Users/franklovecchio/Desktop/development/node/node_modules/redis/index.js:487 throw new Error("Connection in pub/sub mode, only pub/sub commands may ^ Error: Connection in pub/sub mode, only pub/sub commands may be used at RedisClient.send_command (/Users/franklovecchio/Desktop/development/node/node_modules/redis/index.js:487:15) at RedisClient.<anonymous> (/Users/franklovecchio/Desktop/development/node/node_modules/redis/index.js:597:27) at Object._onTimeout (/Users/franklovecchio/Desktop/development/node/distributed-cache/client/test.js:19:12) at Timer.callback (timers.js:83:39) 

代码:

 var redis = require('redis'); var client1 = redis.createClient(); var client2 = redis.createClient(); client2.on('message', function (channel, message) { console.log('Received a message on channel: ' + channel); client1.set('key', message, redis.print); }); client2.subscribe('channel'); client1.set('key', 'valueBefore', redis.print); setTimeout( function() { client2.publish('channel', 'valueAfter'); },3000 ); 

您可能需要发布来自client1消息,因为client2专门用于侦听某个通道上的消息。 关于此行为的几句话是用node_redis自述文件写的:

如果您需要在发布/订阅模式下向Redis发送常规命令,只需打开另一个连接。