lua - 使用 LUA 脚本查询列表时出错
问题描述
当我使用 Lua 脚本查询列表时,如果列表不为空,我会得到正确的结果。但如果列表为空,则会出错。
Blow 是我的脚本:
const char * sLuaQueryServers = "local key_list = redis.call('KEYS',
KEYS[1]); return(redis.call('MGET', unpack(key_list)))";
我通过“serverlist:*”作为键,它成功地返回了列表中的服务器。
但是如果redis中没有服务器,我得到以下错误:
ERR Error running script (call to
f_88620231033e13635dc3181f2947a740f91012dc): @user_script:1: @user_script:
1: Wrong number of args calling Redis command From Lua script
"
请帮忙。
解决方案
对于您的问题,请在调用之前添加一个检查列表是否为空MGET
,例如:
local key_list = redis.call('KEYS', KEYS[1])
if #key_list > 0 then
return(redis.call('MGET', unpack(key_list)))
else
return nil
end
注意 #1:Lua 中不需要分号
注意#2:KEYS
不建议使用任何东西,除了调试
注意#3:您正在使用KEYS
表来传递参数,但是由于您的脚本正在运行KEYS
(命令),这确实是一个有争议的问题
推荐阅读
- github - 如何在 Plesk 中为同一域的每个子域创建新的公钥
- javascript - 使用 Javascript 循环对象并更改细节
- json - 具有动态值的 Jolt Transform JSON Spec 映射
- vb.net - 无法在 Visual Studio 2019 上为 VB.NET Web 应用程序创建新的构建配置
- python - 为 pandas 数据框执行函数列表
- python - 检查数据框中的值
- python - 反序列化 Jaeger 跨度报告
- c# - 当前行在datagridview中返回null
- python - python pandas-profiling安装问题
- postgresql - 如何使用 PostGreSQL 列出两列的非唯一组合?