DBAtlas · 数据库运维图谱

ERR Number of keys can't be greater than number of args: EVAL/EVALSHA: numkeys exceeds argument count(EVAL/EVALSHA:numkeys 超过参数数量)

Redis

含义

运行 Lua 脚本(EVAL/EVALSHA/FCALL)时,指定的键数量(numkeys)大于实际传给命令的参数数量。Redis 无法拆分 KEYS 和 ARGV 数组,因此拒绝该命令。

原因

EVAL 的语法是 'EVAL script numkeys key [key ...] arg [arg ...]'。numkeys 值计算错误(设置过大),或预期的键从未加入命令。这是常见的编程错误。

解决方法

使 numkeys 与实际传给命令的键数量完全相等。使用客户端库的 EVAL 封装(通常将 KEYS 和 ARGV 作为单独的列表接收),以自动计算 numkeys。调用脚本时,正确地将键放入 KEYS,将其他参数放入 ARGV。

在 DBAtlas 中打开 →

同一数据库的其他条目