如何在Node.js中获取Redis查询操作的返回结果?
Node.js Redis sismember 获取布尔值结果实现方案
你直接将sismember调用结果赋值给变量拿不到布尔值,核心原因是Redis客户端的sismember为异步API,直接调用返回的是Promise对象而非实际查询结果,按照以下方式实现即可拿到符合要求的布尔值用于后续逻辑:
推荐方案:async/await 写法
目前主流的node-redis 4.x、ioredis等客户端都已支持Promise,将执行逻辑放在async函数内,用await接收查询结果后转布尔值即可:
async function checkSetMember(key, value) { // 等待异步查询返回结果 const sismemberRes = await client.sismember(key, value); // 原生返回1表示存在、0表示不存在,转布尔值刚好对应true/false const isSet = Boolean(sismemberRes); console.log(isSet); // 可直接用于条件判断 if (isSet) { // 元素属于指定集合的业务逻辑 } else { // 元素不属于指定集合的业务逻辑 } } // 调用函数执行查询 checkSetMember('你的集合key', '要查询的元素值');
兼容方案:回调写法
如果你使用的是旧版本回调风格的Redis客户端,可通过回调参数获取结果:
client.sismember(key, value, (err, result) => { // 按需处理查询错误 if (err) throw err; const isSet = Boolean(result); console.log(isSet); // 后续业务逻辑需写在回调内部 });
内容的提问来源于stack exchange,提问作者Akos
相关产品推荐
相关产品推荐

