我正在使用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是否会在脚本中添加任何额外的信息。
答案 0 :(得分:1)
同一脚本的脚本SHA1总和将始终相同(您也可以在外部进行计算,例如使用sha1sum
工具)。在单实例和群集模式下,无论脚本作为输入获取的键和参数的数量如何,这仍然适用。