lua - Lua中HGETALL的返回类型是什么

标签 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 调用它,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)。

关于lua - Lua中HGETALL的返回类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26741209/

相关文章:

c - 将 SO 数据转储从 HTML 转换回 Markdown 的最简单方法是什么?

node.js - nodejs 在 redis 失败时终止

node.js - 没有使用这个基本的 socket.io + redis 设置接收事件?

python - Redis:查找 SINTER 结果的 SCARD,而不存储中间集

performance - Lua - 如果和,什么更快?

redis - 是否需要在Redis集群之前放置负载均衡器

redis - 锁定在 Redis 中是如何工作的?

json - Redis 和 MongoDB;我应该如何存储大型 JSON 对象,性能问题

multithreading - 从另一个线程调用Lua函数

c++ - Lua C-API : How to identify the coroutine/thread involved in a lua_pushcclosure callback?