尝试创建两个客户端;一种是发布/订阅,另一种是标准连接。这不可能吗?必须有一种方法可以将其抽象为工作:)基本上,如果我做一个get key
运行 test.js 后,我看到的只是“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
since client2
专门用于监听某个频道上的消息。关于这种行为的几句话写在节点redis https://github.com/mranney/node_redis readme:
如果您需要在发布/订阅模式下向 Redis 发送常规命令,
只需打开另一个连接即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)