首页 > 解决方案 > 在 Redis 中使用 RENAME 时确保新旧键值具有相同的哈希标记

问题描述

Redis 文档提到了有关RENAME命令的警告:

在集群模式下,key 和 newkey 必须在同一个哈希槽中,这意味着实际上只有具有相同哈希标签的键才能在集群中可靠地重命名。

我知道我可以使用CLUSTER KEYSLOT命令确保我的旧键值和新键值具有相同的哈希标记,但如果它们不这样做我该怎么办?继续选择随机值,直到找到一个有效的值?

标签: redis

解决方案


您应该在键中添加一个哈希标签,而不是更改键槽映射。如果你的旧key和新key都有相同的hash tag,例如old: old-key-{hash-tag}, new: new-key-{hash-tag},保证它们在同一个hash slot ,就可以成功重命名了。

如果您无法更改旧密钥以添加哈希标签,您可以使用旧密钥作为新密钥的哈希标签,例如 old: old-key, new: {old-key}-new-key . 这也确保了旧密钥和新密钥都位于同一插槽中。


推荐阅读