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

标签 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 值是否会不同?如果这两个 key 位于不同的集群中,那么 SHA 值是否不同?

我正在尝试将此 SHA 值保存在字符串中,并将其用于所有 key 。

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

最佳答案

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

关于redis - 在redis集群模式下,我们加载脚本时返回的SHA值是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273826/

相关文章:

docker - 从主机连接到在 Docker 容器中运行的 Redis

ftp - LuaSocket FTP 总是超时

lua - 函数和 while 语句创建无限打印循环

java - 无法获取 Jedis 连接,无法从池中获取资源

azure - StackExchange Redis 客户端 StringSet 返回 false?

在 Linux 上使用 Redis 编译 C 代码

python - Windows 错误 10061 - Django channel

oop - 元表在 Lua (5.2) 中为 OOP 服务的目的是什么?

spring-boot - spring-data-redis multiGet 如何处理缓存未命中?

java - 使用 jedis 恢复排序集时,顺序是否保留在集合中?