redis - '(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
您的帮助将不胜感激。
解决方案
您遇到的问题是由于您没有分隔 KEYS 和 ARGS - 在命令行中使用逗号来执行此操作。另外,请注意,由于逗号是分隔符,因此您需要使用额外的空格以确保它不被视为键的一部分。
像这样:
redis-cli --eval myscript.lua myzset , 3 "one"
推荐阅读
- c# - AutoMapper:使用空图像(映射到 byte[] 中的 null 而不是其他集合)
- json - 使用 Spark 清理 JSON 对象
- html - 更改 HTML 中的背景和文本颜色
- javascript - 如何更改此正则表达式,使其不删除冒号:
- r - 将 6GB SPSS (.dta) 数据集读入 R
- c# - 将动态键值对数据从 AJAX 传递到控制器给出空值
- mysql - 流明模型时间戳与表中数据不同
- android - 无法将视图放置到 CardView ConstraintLayout 的中间,因为下面的 View 的可见性消失了
- javascript - 如何忽略删除字符串中的特殊字符
- google-bigquery - 如何通过 CLI 将 CSV(按列名分区)从云存储上传到 BigQuery?