Redis集群上的Lua脚本

时间:2019-01-17 13:15:52

标签: redis lua cluster-computing redis-cluster

我有一个Redis集群,我想在目标节点上执行LUA脚本。 当我这样做时,我收到来自Redis Cluster的错误消息,提示密钥必须位于同一插槽上,但是脚本仅对1个密钥执行两个命令。

*--------------------*
|  datefield | count |
*--------------------*
| 2019-01-15 |   2   |
| 2019-01-16 |   1   |
| 2019-01-17 |   3   |
*--------------------*

我尝试使用哈希标签键,但是它不起作用。

1 个答案:

答案 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命令,它就应该起作用。