从用 Lua 脚本编写的 Redis 函数中访问不同主节点上的数据结构

问题描述 投票:0回答:1

我有一个 Redis 集群 v7.x,有 3 个主节点,每个主节点有 1 个从节点。

用 Lua 脚本编写的函数

myFunction
已加载到所有 3 个 master 中。

该函数是否可以访问数据结构,例如存储在另一个主节点上的

SortedSet

这是必需的,因为来自不同客户端的调用可能会被重定向到任何节点,并且那里的函数定义需要访问特定的数据结构,而该数据结构可能不在处理客户端请求的同一节点上。

redis lua redis-cluster
1个回答
0
投票

不可以,函数只能访问它所调用的分片上的键。如果您尝试访问不同分片上的密钥,您将收到

MOVED
CROSSSLOT
错误。

也就是说,对于听起来你正在做的事情,你不必担心这些。

每次调用

FCALL
时,您指定函数访问的键,客户端负责将命令定向到适当的分片。因为听起来您只使用一个键,所以这应该不是问题。

但是,如果您想访问函数中的多个键,则必须确保它们位于同一个哈希槽中,这样就不会遇到跨槽问题。请参阅 Redis 集群规范中的 Hash Tags,它解释了如何确保正确确定键名的范围,从而保证它们位于正确的分片上。

© www.soinside.com 2019 - 2024. All rights reserved.