her*_*ere 2 lua redis redis-cluster
环境:Redis 集群
你好。我的要求是:
查找value-B 想到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;
Run Code Online (Sandbox Code Playgroud)
我的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 脚本尝试访问集群节点中的非本地密钥
小智 5
Lua 脚本仅在一个 Redis 实例上运行,其内部查询不会被集群重定向,因此,如果两个键存在于另一个集群中,它无法查询它们。
在你的情况下,keyA和valueA(即keyB)被散列到不同的槽和不同的节点,所以lua将不起作用。
解决此问题的一种方法是将以下内容作为键和值。
如果您有一个“key1”,并且其值为“value1”,则不应将其值/key2 保留为“value1”,而应将其保留为“{key1}:value1”。Redis 将确保“key1”和“{key1}:value1”都散列到单个节点,并且您将能够使用 lua 查询它们。
| 归档时间: |
|
| 查看次数: |
5169 次 |
| 最近记录: |