咨询node-redis中PUBSUB CHANNELS的正确使用语法
node-redis 调用 PUBSUB CHANNELS 无输出问题解决
你当前的代码存在两个关键问题,导致控制台没有输出:
- 参数传递错误:
sendCommand的第一个参数应该是包含命令名和参数的数组,但你用了('PUBSUB CHANNELS', [])这种逗号表达式写法,实际只把空数组传给了函数,命令名根本没传对。 - 混用异步语法:你同时用了
await和回调函数,node-redis 中这两种方式不能同时使用——用await时会直接返回结果,不需要回调;用回调时则不需要加await。
正确写法示例
方式一:使用 await 异步语法
try { const result = await redis.sendCommand(['PUBSUB', 'CHANNELS']); console.log(result); } catch (err) { console.error(err); }
方式二:使用回调函数
redis.sendCommand(['PUBSUB', 'CHANNELS'], function(err, result) { if (err) { console.error(err); return; } console.log(result); });
另外,node-redis 还提供了更直观的封装方法,也可以直接调用:
// await 方式 const channels = await redis.pubSub.channels(); console.log(channels); // 回调方式 redis.pubSub.channels(function(err, channels) { if (err) { console.error(err); return; } console.log(channels); });
内容的提问来源于stack exchange,提问作者Hulk
相关产品推荐
相关产品推荐

