环境: Redis集群
嗨。我的要求是:
查找值-B思想键-A(过程是使用键-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;我的红宝石:
./bin/redis-cli -c -h 192.168.33.203 -p 6000 --eval ./x-userid-tag.lua 0C559F3FEF368A8B53DE69C267423F0E
error msg:(错误)错误运行脚本(调用f_9bd20ba85f7bcc8ee1f6b55c4158bfa93eba2221):@user_script:2:@user_script: 2: Lua脚本试图访问集群节点中的非本地密钥
发布于 2018-04-03 09:00:30
Lua脚本只在一个redis实例上运行,它的内部查询不会被集群重定向,因此,如果两个键存在于另一个集群中,它就不能查询它们。
在您的示例中,keyA和valueA(即keyB)被散列到不同的时隙和不同的节点,因此lua将无法工作。
修复它的一种方法是将以下内容作为键和值。
如果您有‘key2 1’,其值为‘value 1’,而不是将其值/key2 2保持为‘value 1’,则应该将其保持为‘{key1}:value 1’。Redis将确保'key1‘和’{key1}:value1 1‘都被散列到一个节点上,并且您可以使用lua查询这两个节点。
https://stackoverflow.com/questions/49622787
复制相似问题