我有Lua脚本,我正在考虑迁移到Redis Cluster
拨打eval
时,是否应指定完整的密钥名称?
或者我可以通过指定主题标签逃脱?
例如,我希望仅传递{UNIQUE_HASH_TAG}
而不是{UNIQUE_HASH_TAG}/key1
,{UNIQUE_HASH_TAG}/key2
...等等
我有很多键,逻辑非常复杂 - 有时我最终动态生成键名,但在相同的哈希标记内。
我是否会通过传递哈希标记而不是键名来违反某些规范?
答案 0 :(得分:3)
我应该指定完整的密钥名称
这是推荐的做法。
我是否会违反某些规范
不,规范没有说明需要明确传递密钥名称。 KEYS
/ ARGV
机制已经准备好为集群做准备,但在集群实际出现之前。那时,哈希标签不是群集设计的一部分,因此建议是为了避免在脚本中硬编码/动态生成密钥名称,因为他们无法保证#39;将位于相同的群集哈希位置。
您的方法完全有效,并且可以按预期工作。我想强调的是,只有你管理了很多所谓的{UNIQUE_HASH_TAG},这才有意义 - 否则你只会遇到一些可能成为可扩展性挑战的插槽。
编辑:所有这一切,你真的应该始终明确地将密钥名称传递给脚本而不是欺骗。虽然目前尚未阻止,但此未指定的行为可能会在将来发生变化并导致代码损坏。