Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua中HGETALL的返回类型是什么_Lua_Redis - Fatal编程技术网

Lua中HGETALL的返回类型是什么

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给它打

我正在写一个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给它打电话,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的输出用作字典的问题