在redis集群模式下,我们加载脚本时返回的SHA值是否相同?
In redis cluster mode, Is the SHA value returned when we load the script is same?
我正在使用 lua 脚本执行属于同一键的 2 个操作。 运行 集群模式下的Redis。使用 java jedis 库连接到 Redis 集群。
加载lua脚本的语法如下
jedisCluster.loadScript(<ScriptString>, <Key>);
它returns 一个 SHA 值,我可以在 jedis 集群上的 evalsha 函数中使用,如下所示
jedisCluster.evalsha(<ShaValue>, <Key Count>, <key>)
执行上述方法时我正在处理 NoScript 错误,将再次加载脚本。
问题:如果我用不同的键值加载相同的脚本,SHA 值是否会不同?如果这两个密钥位于不同的集群中,那么 SHA 值是否不同?
我正在尝试将此 SHA 值保存在字符串中,并将其用于所有密钥。
我知道字符串的 SHA 是相同的,但我不确定 redis 是否在生成 SHA 之前向脚本添加了任何额外信息。
对于同一个脚本,脚本的 SHA1 总和将始终相同(您也可以在外部计算它,例如使用 sha1sum
工具)。这在单实例和集群模式下仍然适用,无论脚本作为输入获取的键和参数的数量如何。
我正在使用 lua 脚本执行属于同一键的 2 个操作。 运行 集群模式下的Redis。使用 java jedis 库连接到 Redis 集群。
加载lua脚本的语法如下
jedisCluster.loadScript(<ScriptString>, <Key>);
它returns 一个 SHA 值,我可以在 jedis 集群上的 evalsha 函数中使用,如下所示
jedisCluster.evalsha(<ShaValue>, <Key Count>, <key>)
执行上述方法时我正在处理 NoScript 错误,将再次加载脚本。
问题:如果我用不同的键值加载相同的脚本,SHA 值是否会不同?如果这两个密钥位于不同的集群中,那么 SHA 值是否不同?
我正在尝试将此 SHA 值保存在字符串中,并将其用于所有密钥。
我知道字符串的 SHA 是相同的,但我不确定 redis 是否在生成 SHA 之前向脚本添加了任何额外信息。
对于同一个脚本,脚本的 SHA1 总和将始终相同(您也可以在外部计算它,例如使用 sha1sum
工具)。这在单实例和集群模式下仍然适用,无论脚本作为输入获取的键和参数的数量如何。