首页 > 解决方案 > '(error) ERR Error running script (call to ...)' 当使用 LUA 脚本的 --eval 时

问题描述

运行此命令时收到错误消息:

redis-cli --eval myscript.lua myzset 3 "one"

错误信息:

(error) ERR Error running script (call to f_9c623c243d74e75a4fe64de7a6826b47f8d7
d400): @user_script:1: @user_script: 1: Lua redis() command arguments must be st
rings or integers

Lua脚本:

local ans = redis.call('ZINCRBY', KEYS[1], ARGV[1], ARGV[2])
if   tonumber(ans) <= 0 then
    redis.call('ZREM', KEYS[1], ARGV[2]) 
end
return (tonumber(ans) < 1 and '-1' or ans)

目标是使用自动删除零值或负值ZINCRBY

我在用:

Windows 7 64 位 Redis 版本:3.2.100

您的帮助将不胜感激。

标签: redisredis-cluster

解决方案


您遇到的问题是由于您没有分隔 KEYS 和 ARGS - 在命令行中使用逗号来执行此操作。另外,请注意,由于逗号是分隔符,因此您需要使用额外的空格以确保它不被视为键的一部分。

像这样:

redis-cli --eval myscript.lua myzset , 3 "one"

推荐阅读