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