Redis执行save命令时提示参数数量错误的问题求助
Redis执行save命令时提示参数数量错误的问题求助
兄弟,我来帮你捋捋这个问题!首先咱们先搞清楚核心矛盾:你遇到的错误ERR wrong number of arguments for 'save' command,其实是Redis原生的SAVE命令报的错——这个命令本身是用来触发RDB持久化的,它不需要任何参数,如果你给它传了参数就会抛出这个错误。
但看你贴的代码,你自己写的redisDataService.save方法里明明调用的是redisClient.set(key, value),按道理不该触发SAVE命令的错误啊?那大概率是你的代码里某个地方误调用了Redis客户端的原生save方法,还传了参数,和你自己封装的save方法没关系。
给你几个排查和解决的方向:
- 检查所有Redis客户端调用点:搜一下你的代码库,看看有没有其他地方写了类似
redisClient.save(key, value)的代码——这绝对是错误的写法,Redis原生save命令不需要参数,这么写就会触发你遇到的报错。 - 确认自己的
save方法被正确调用:可以在redisDataService.save方法里加更详细的日志,比如打印this.redisClient.set的调用参数,或者直接打印当前方法的执行栈,确认是不是这个方法真的被执行了,有没有可能是方法名冲突(比如客户端本身有个save方法,你调用错了)。 - 测试
set命令的正确性:可以把set命令的调用改成带可选参数的写法测试,比如:
如果这样改了之后不再报错,说明之前的问题确实不是出自这个await this.redisClient.set(key, value, { EX: 3600 }); // 加个过期时间,测试set命令是否正常工作set调用。 - 检查客户端与服务器版本兼容性:你用的是Redis 7.2.0,确保你使用的Redis客户端库(比如
ioredis或者官方的redis包)版本是兼容的,比如官方redis包的4.x+版本是支持Redis 7.x的,旧版本可能会有奇怪的兼容问题。 - 直接在Redis-cli验证:你可以打开Redis-cli,输入
SAVE(不带任何参数),会触发持久化操作;如果输入SAVE key value,就会弹出和你一样的错误,这样就能确认错误的来源确实是带参数的SAVE命令调用。
你可以先按这些方向排查,应该能很快找到问题所在!
备注:内容来源于stack exchange,提问作者Freddy Barragán
相关产品推荐
相关产品推荐

