当前位置: 首页 > 面试题库 >

在Redis Cluster中使用Lua时应该指定完整的密钥名称,还是可以仅传递#标签?

厉念
2023-03-14
问题内容

我有正在考虑迁移到Redis Cluster的Lua脚本

通话时是否应指定完整的键名eval?还是仅指定标签就可以逃脱?

例如,我只希望通过{UNIQUE_HASH_TAG}替代{UNIQUE_HASH_TAG}/key1{UNIQUE_HASH_TAG}/key2…等

我有很多键,逻辑也很复杂-有时我最终会 在同一 哈希标签内动态生成键名。

我会通过仅传递哈希标签而不是键名来违反某些规范吗?


问题答案:

我应该指定完整的键名吗

这是推荐的做法。

我会违反一些规格吗

不,规范没有声明键名称需要显式传递。将KEYS/ ARGV机制到位,在群集的准备,但集群之前居然走过来的。那时,哈希标签还不是集群设计的一部分,因此
建议 避免在脚本中进行硬编码/动态生成键名,因为不能保证它们将位于同一集群哈希槽中。

您的方法是完全有效的,并且可以按预期工作。我确实要强调一点,只有在您管理许多所谓的{UNIQUE_HASH_TAG}时,这才有意义-
否则,您只会碰到几个插槽,这可能会成为可伸缩性挑战。

编辑 :这么说,您确实应该 始终
将键名显式传递给脚本,而不是欺骗。尽管目前尚未阻止此行为,但是这种未指定的行为将来可能会更改,并会导致代码损坏。



 类似资料:
  • 问题内容: 我有一个私人仓库,我想安装在我的package.json文件中。 默认情况下,npm使用您的默认私钥。我希望能够指定运行时应使用哪个ssh密钥npm 。有什么办法吗? 问题答案: 以下是一些解决方案: 在其中添加一个条目。例如: 预先使用并将密钥添加到代理实例。 使用诸如ssh-ident之类的东西可以根据当前的工作目录或传递给ssh-ident的参数动态选择ssh代理和身份。正如他们

  • 问题内容: 从Redis文档上可以看到: 不应该代表键名 在Redis集群教程中 哈希标签记录在Redis Cluster规范中,但是要点是,如果密钥的{}中的括号之间有一个子字符串,则仅对字符串中的内容进行哈希处理,例如,此{foo}键和另一个{foo} key保证在同一哈希槽中,并且可以在以多个key作为参数的命令中一起使用。 是否可以仅传递哈希标签,或者仅传递带有该哈希标签的一个键?我们希望

  • 问题内容: 这是我的代码示例: 是否可以使用我的paxkage(bio)中的函数而无需指定包名称: ? 问题答案: 您可以将其用作导入声明,例如: 如果出现显式的句号()而不是名称,则在该软件包的package块中声明的所有软件包导出的标识符都将在导入源文件的file块中声明,并且 必须在不使用限定符的情况下进行访问 。 这就是像govey这样的测试框架所做的: 您不需要使用,或者由于导入以’开头

  • 使用指定密码生成对称密钥,保存并返回ID。 调用: web3.shh.generateSymKeyFromPassword(password, [callback]) 参数: password:String - 用于生成对称密钥的密码 callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为返回结果 返回值: String - 成功时返回ID,否则返回错误信息

  • 问题内容: 我试图将类名传递给react组件以更改其样式,但似乎无法正常工作: 我试图通过传递具有相应样式的类的名称来更改药丸的样式。我是React的新手,所以也许我做的方式不正确。谢谢 问题答案: 在React中,当您想传递一个解释表达式时,必须打开一对花括号。尝试: 使用类名 npm包

  • 问题内容: 在java中是值传递还是引用传递,有什么区别? 问题答案: Java总是按值传递参数,而不是按引用传递参数。 看下面一个实例: