我正在写一个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
这些条件都不起作用。有人有想法吗?
答案 0 :(得分:3)
在线快速搜索似乎表明HGETALL
(以及返回键/值对的其他函数)的结果是一系列顺序键/值对。所以{"key1", "val1", "key2", "val2"}
。
这表明空结果(假设它不是nil
)将是一个空表(即session[1] == nil
)。
答案 1 :(得分:0)
更通用的方法,也适用于包含字符串键的表格next(table_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_name == nil or next(table_nil)