来自Redis documentation on eval
它说:
中不应代表关键名称
Hash标签记录在Redis集群规范中,但要点是如果密钥中{}括号之间有子字符串,则只对字符串内部的内容进行哈希处理,例如此{foo}键和另一个{foo}密钥保证位于相同的散列槽中,并且可以在具有多个密钥作为参数的命令中一起使用。
是否可以只传递哈希标记,或者只传递一个具有该哈希标记的密钥?我们希望eval的内容使用一组动态密钥来确定另一个密钥的内容,但每个密钥都属于同一个哈希标记。
答案 0 :(得分:1)
是的,这应该有用。
如the documentation中所述:
在执行之前必须分析所有Redis命令,以确定命令将在哪些键上运行....注意,为了向用户提供滥用Redis单实例配置的机会,不执行此规则,代价是编写与Redis Cluster不兼容的脚本。
只要您确保脚本与Redis Cluster兼容,那么不遵守此规则即可。这意味着对EVAL
的调用应该指定一组密钥,这些密钥散列到一个且只有一个服务器。
只使用一个密钥(例如{foo}
)就可以了。