如何安全地从 SPOP 中获取值并测试其值或空值

我目前在我的代码中进行了两个步骤,我刚刚意识到我可以将这两个步骤合并到一个 LUA 脚本中。

我所做的是:

  1. 对我的集合进行 SPOP 操作
  2. 调用一个 lua 脚本来执行其他操作。

步骤#1 中的值被传递并存储在本地变量 ele 中。

我的 lua 脚本如下:

local ele = KEYS [1]
local p = KEYS [2]
local u = KEYS [3]
if redis.call("SISMEMBER",u,ele)== 0 then
.. 
.. 
return "OK" 
else
  return "EXISTS" 
end

我如何从我的 lua 脚本中调用 SPOP 并将其存储在变量中呢?

我需要执行以下操作:

local popped = redis.call("SPOP", "my-set-here")

我不确定是否会起作用,但是我需要检查它是否为空还是具有某个值。 只是想确保我在遵循最佳实践。

顺便说一下,创建和测试 lua 脚本的最快方法是什么?

点赞
用户3160475
用户3160475

你可以使用以下方式检查 popped 的非空值:

if popped then
  -- do something
end

至于开发 Redis Lua 脚本,可以查看 Zerobrane 的集成:

声明:我参与了集成工作 ;)

2017-10-17 12:44:47