似乎以下 Redis Lua 脚本返回false而不是nil,这与文档所说的相矛盾:
> eval "local r = redis.call('get', 'none'); if r==nil then return 42 end" 0
(nil)
> eval "local r = redis.call('get', 'none'); if r==false then return 42 end" 0
(integer) 42
> eval "local r = redis.call('get', 'none'); if not r then return 42 end" 0
(integer) 42
Run Code Online (Sandbox Code Playgroud)
第一个eval在条件下失败r==nil,第二个eval似乎证明返回值是false
似乎 usingnot r是我手头最安全的选项,但此处的文档说该GET命令将返回nil
这是其他人都观察到并依赖的事实,即检查返回的命令的最安全的 Redis Lua 脚本nil是使用not r吗?