我有以下Redis LUA脚本:
eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == nil then return 'true' else return 'false' end" 1 stats test
Run Code Online (Sandbox Code Playgroud)
作为回报,我总是得到“假”,尽管以下命令返回 nil:
zscore stats test
Run Code Online (Sandbox Code Playgroud)
结果:
(nil)
Run Code Online (Sandbox Code Playgroud)
第一个命令的预期结果是“真”。我已将第一个命令的键和参数更改为随机值,但总是得到“假”。任何人都可以帮助我吗?我正在使用 Redis 2.8.17。
- Redis Nil 批量回复和 Nil 多批量回复 -> Lua false 布尔类型
这意味着要使您的脚本按预期“工作”,您需要对其进行如下更改:
eval "if redis.call('ZSCORE', KEYS[1], ARGV[1]) == false then return 'true' else return 'false' end" 1 stats test
Run Code Online (Sandbox Code Playgroud)
注意:
顺便说一句,虽然 Lua 不支持三元运算符,但可以使用以下等效项进行模拟:
eval "return redis.call('ZSCORE', KEYS[1], ARGV[1]) and 'false' or 'true'" 1 stats test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |