Lua 脚本试图访问集群节点中的非本地密钥

Lua script attempted to access a non local key in a cluster node

环境:Redis 集群

你好。 我的要求是:

Find value-B thought key-A (过程是用key-A找出value-A,value-A == key-B,用key-B找出value-B)

我的 lua 看起来像这样:

[root@ml-208 redis]#cat x-userid-tag.lua

local f3=redis.call('HGET',KEYS[1],'1'); local f4=redis.call('HGET',f3,'1') ; return f4;

我的redis命令:

./bin/redis-cli -c -h 192.168.33.203 -p 6000 --eval ./x-userid-tag.lua 0C559F3FEF368A8B53DE69C267423F0E

错误信息: (错误)ERR 错误 运行 脚本(调用 f_9bd20ba85f7bcc8ee1f6b55c4158bfa93eba2221):@user_script:2: @user_script: 2: Lua 脚本试图访问非集群节点中的本地密钥

Lua脚本只在一个redis实例上运行,它的内部查询不会被集群重定向,因此,如果它们存在于另一个集群中,它就无法查询两个键。

在您的情况下,keyA 和 valueA(即 keyB)被散列到不同的槽和不同的节点,因此 lua 将不起作用。

修复它的一种方法是将以下内容作为键和值。

如果你有一个 'key1',它的值为 'value1',而不是将它的 value/key2 保持为 'value1',你应该将它保持为 '{key1} :值1'。 Redis 将确保 'key1' 和 '{key1}:value1' 都散列到单个节点,您将能够使用 lua.

查询它们