使用Redis Cluster,是否可以将哈希标签传递给eval?

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

来自 eval

Redis 文档说:

不应代表键名

Redis 集群教程中

哈希标签记录在 Redis 集群规范中,但要点是,如果键中的

{}
方括号之间有子字符串,则仅对字符串内部的内容进行哈希处理,因此例如
this{foo}key
another{foo}key
是保证位于同一个哈希槽中,并且可以在具有多个键作为参数的命令中一起使用。

是否可以只传递哈希标签,或者只传递一个带有该哈希标签的键?我们希望 eval 的内容能够与由另一个键的内容确定的动态键集一起使用,但每个键都属于同一个哈希标签。

redis redis-cluster
1个回答
3
投票

是的,应该有效。

文档中所述:

在执行之前必须对所有 Redis 命令进行分析,以确定该命令将在哪些键上运行......请注意,不强制执行此规则,以便为用户提供滥用 Redis 单实例配置的机会,但代价是编写脚本与 Redis 集群不兼容。

所以不遵守这个规则也可以,只要你确保你的脚本与Redis Cluster兼容即可。这意味着对

EVAL
的调用应该指定一组散列到一个且仅一个服务器的密钥。

只需使用一个键(例如

{foo}
)就可以正常工作。

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