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

时间:2018-04-19 16:52:39

标签: redis redis-cluster

来自Redis documentation on eval它说:

  

不应代表关键名称

Redis cluster tutorial

  

Hash标签记录在Redis集群规范中,但要点是如果密钥中{}括号之间有子字符串,则只对字符串内部的内容进行哈希处理,例如此{foo}键和另一个{foo}密钥保证位于相同的散列槽中,并且可以在具有多个密钥作为参数的命令中一起使用。

是否可以只传递哈希标记,或者只传递一个具有该哈希标记的密钥?我们希望eval的内容使用一组动态密钥来确定另一个密钥的内容,但每个密钥都属于同一个哈希标记。

1 个答案:

答案 0 :(得分:1)

是的,这应该有用。

the documentation中所述:

  

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

只要您确保脚本与Redis Cluster兼容,那么不遵守此规则即可。这意味着对EVAL的调用应该指定一组密钥,这些密钥散列到一个且只有一个服务器。

只使用一个密钥(例如{foo})就可以了。