从Redis文档上eval可以看到:
eval
不应该代表键名
在Redis集群教程中
哈希标签记录在Redis Cluster规范中,但是要点是,如果密钥的{}中的括号之间有一个子字符串,则仅对字符串中的内容进行哈希处理,例如,此{foo}键和另一个{foo} key保证在同一哈希槽中,并且可以在以多个key作为参数的命令中一起使用。
是否可以仅传递哈希标签,或者仅传递带有该哈希标签的一个键?我们希望eval的内容可以与由另一个键的内容确定的一组动态键一起使用,但是每个键都属于同一个hash标签。
是的, 应该 可以。
如文档中所述:
必须在执行之前分析所有Redis命令,以确定该命令将对哪些键进行操作…。请注意,未强制执行此规则是为了向用户提供滥用Redis单实例配置的机会,而不会编写脚本与Redis Cluster兼容。
因此,只要您确保脚本与Redis Cluster兼容,就可以不遵循此规则。这意味着对的调用EVAL应指定一组散列到一个且只有一个服务器的密钥。
EVAL
仅使用单个键(例如{foo})就可以正常工作。
{foo}