env:Redis群集
你好 我的要求是:
以键A的方式找到值B(过程是使用键A来找到值A,值A ==键B,使用键B来找到值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 cmd:
./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}:value1'。Redis将确保将'key1'和'{key1}:value1'都散列到单个节点,并且您将能够使用lua查询这两个节点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句