Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Redis LUA脚本条件选择错误的返回语句_Lua_Redis - Fatal编程技术网

Redis LUA脚本条件选择错误的返回语句

Redis LUA脚本条件选择错误的返回语句,lua,redis,Lua,Redis,我有以下Redis LUA脚本: eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == nil then return 'true' else return 'false' end" 1 stats test 作为回报,我总是得到“false”,尽管下面的命令返回nil: zscore stats test 结果: (nil) 第一个命令的预期结果为“true”。我已经将第一个命令的键和参数更改为随机值,并且总是得到“false”。有人能帮我

我有以下Redis LUA脚本:

eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == nil then return 'true' else return 'false' end" 1 stats test
作为回报,我总是得到“false”,尽管下面的命令返回nil:

zscore stats test
结果:

(nil)
第一个命令的预期结果为“true”。我已经将第一个命令的键和参数更改为随机值,并且总是得到“false”。有人能帮我吗?我正在使用Redis 2.8.17。

请参阅,特别是这一行:

Redis Nil批量回复和Nil多批量回复->Lua假布尔类型 这意味着,要使脚本按预期工作,您需要对其进行如下更改:

eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == false then return 'true' else return 'false' end" 1 stats test
请注意:

Redis'协议没有布尔类型,因此基本上返回字符串'true'或'false'。 逻辑是反直觉的,如果是假的,那么是真的; 顺便说一句,虽然Lua不运动,但可以使用以下等效项进行模拟:

eval "return redis.call('ZSCORE', KEYS[1], ARGV[1]) and 'false' or 'true'" 1 stats test
请参阅,特别是这一行:

Redis Nil批量回复和Nil多批量回复->Lua假布尔类型 这意味着,要使脚本按预期工作,您需要对其进行如下更改:

eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == false then return 'true' else return 'false' end" 1 stats test
请注意:

Redis'协议没有布尔类型,因此基本上返回字符串'true'或'false'。 逻辑是反直觉的,如果是假的,那么是真的; 顺便说一句,虽然Lua不运动,但可以使用以下等效项进行模拟:

eval "return redis.call('ZSCORE', KEYS[1], ARGV[1]) and 'false' or 'true'" 1 stats test

非常感谢!我错过了规范中的那个部分。非常感谢!我错过了规范中的那个部分。