在redis集群模式下,加载脚本时返回的SHA值是否相同?

时间:2018-11-13 04:28:56

标签: redis lua jedis

我正在使用lua脚本执行属于同一键的2个操作。在集群模式下运行Redis。使用java jedis库连接到Redis集群。

加载lua脚本的语法如下

jedisCluster.loadScript(<ScriptString>, <Key>);

它返回一个SHA值,我可以在jedis集群的evalsha函数中使用它,如下所示

jedisCluster.evalsha(<ShaValue>, <Key Count>, <key>)

执行上述方法时,我正在处理NoScript错误,并将再次加载脚本。

问题:如果我用不同的键值加载相同的脚本,SHA值会有所不同吗?如果两个键位于不同的群集中,那么SHA值是否不同?

我试图将此SHA值保存为字符串,将其用于所有键。

我知道字符串的SHA将是相同的,但是我不确定在生成SHA之前redis是否会在脚本中添加任何额外的信息。

1 个答案:

答案 0 :(得分:1)

同一脚本的脚本SHA1总和将始终相同(您也可以在外部进行计算,例如使用sha1sum工具)。在单实例和群集模式下,无论脚本作为输入获取的键和参数的数量如何,这仍然适用。