我有一个Redis集群,我想在目标节点上执行LUA脚本。 当我这样做时,我收到来自Redis Cluster的错误消息,提示密钥必须位于同一插槽上,但是脚本仅对1个密钥执行两个命令。
*--------------------*
| datefield | count |
*--------------------*
| 2019-01-15 | 2 |
| 2019-01-16 | 1 |
| 2019-01-17 | 3 |
*--------------------*
我尝试使用哈希标签键,但是它不起作用。
答案 0 :(得分:3)
收到此错误是因为您试图访问名为TEST
的Redis密钥,但不要通过在EVAL命令中列出它来使Redis或您的Redis客户端知道它。
Redis Lua脚本具有两个参数列表,一个是通用(ARGV[]
),另一个是脚本将要访问的键的严格列表(KEYS[]
)。
您可能在HEXISTS
调用中交换了键名和字段名,即,您可能需要使用:
if redis.call('HEXISTS', KEYS[1], 'TEST') == 1
then
redis.call('HSET', KEYS[1], 'TEST', ARGV[1])
return 1
end
return 0
只要键名正确地传递到EVAL
命令,它就应该起作用。