NodeJS中Redis Key删除失败求助:代码无效但redis-cli可删除
问题分析与解决方案
核心问题
你代码里生成的jobName错误包含了双引号,导致Redis客户端尝试删除的key与实际存在的key不匹配。
看你的日志输出Removing "bull:mt-queue:4" key from redis,这里的双引号已经被当作key的一部分传给了redisClient.del(),但Redis中真实存在的key是bull:mt-queue:4(不带引号)。而你用redis-cli del "bull:mt-queue:4"时,引号是Shell的参数包裹符,Redis实际接收到的key是不带引号的,所以命令能生效;但代码里把引号作为key的一部分,自然找不到对应的key,删除操作等于无效执行。
修正代码
移除拼接jobName时手动添加的双引号,同时注意Redis操作是异步的,建议加上await确保操作完成:
const { queue } = job as unknown as Job; // 直接拼接各部分,不要加额外的双引号 const jobName = `${(queue as unknown as any).keyPrefix}:${queue.name}:${job.id}`; MtPromotionProcessor.loggerService.info(`Removing ${jobName} key from redis`); // 异步操作需等待完成,确保在async函数中使用await await redisClient.del(jobName);
额外验证
修正后可以在日志里看到输出变成Removing bull:mt-queue:4 key from redis,此时再检查Redis,对应的key就会被正确删除。
内容的提问来源于stack exchange,提问作者Danyal Sandeelo
相关产品推荐
相关产品推荐

