Node.js TypeScript中Redis SET命令过期时间无效报错原因咨询
Redis set命令报错:ERR invalid expire time in 'set' command 原因及解决办法
问题原因
- Redis的
EX参数要求传入正整数(单位为秒),用于设置键的过期时间,0属于无效值,Redis会直接返回错误。 - 你的
RedisPrimary.set方法默认将expire参数设为0,调用时未传入自定义过期时间时,会把{ EX: 0 }传递给Redis客户端,这就触发了无效过期时间的报错。
解决办法
修改RedisPrimary.set方法,当expire为0时,不传递EX选项,这样Redis就不会为键设置过期时间,符合你“无过期”的预期:
async set(key: string, value: string, expire: number = 0): Promise<boolean> { const options = expire > 0 ? { EX: expire } : {}; const resultSet = await this.client.set(key, value, options); return resultSet === "OK"; }
内容的提问来源于stack exchange,提问作者Juls
相关产品推荐
相关产品推荐

