Lua中HGETALL的返回类型是什么
我正在写一个Lua脚本,下面是我的脚本:Lua中HGETALL的返回类型是什么,lua,redis,Lua,Redis,我正在写一个Lua脚本,下面是我的脚本: local session = redis.call('HGETALL', accessToken) if (session == nil) then redis.log(redis.LOG_WARNING, 'Session not found : ' .. accessToken) return end 我尝试了多个if条件,但无法找到如何正确验证该值是否为null。另外,我不希望以前调用EXISTS命令的开销 我试着通过telnet给它打
local session = redis.call('HGETALL', accessToken)
if (session == nil) then
redis.log(redis.LOG_WARNING, 'Session not found : ' .. accessToken)
return
end
我尝试了多个if条件,但无法找到如何正确验证该值是否为null。另外,我不希望以前调用EXISTS命令的开销
我试着通过telnet给它打电话,redis的回复是*0
以下是我尝试过的列表:
if (session == nil) then
if (session == '[]') then
if (session == '{}') then
if (session == '*0') then
if (session == '') then
if (session == '(empty list or set)') then
if (not session) then
这些条件都不起作用。有人有主意吗?一些在线快速搜索似乎表明,
HGETALL
(以及其他返回键/值对的函数)的结果是一个顺序键/值对表。所以{“key1”、“val1”、“key2”、“val2”}
这将表明空结果(假定它不是
nil
)将是一个空表(即session[1]==nil
)。更一般的方法,也适用于具有字符串键的表是下一步(table\u name)==nil
您的脚本将是:
local session = redis.call('HGETALL', accessToken)
if next(session) == nil then
redis.log(redis.LOG_WARNING, 'Session not found : ' .. accessToken)
return
end
当然,在一般情况下,最好也检查nil table
table\u name==nil或next(table\u nil)
结果是否为空表?您能检查一下会话[1]==nil吗?先生,您已经得到答案了!感谢您的帮助,为了完成这一点,这里还有一个关于将redis.call的输出用作字典的问题