php 如何知道在哪个 memcached 节点中查找数据?

php 如何知道在哪个 memcached 节点中查找数据?

我是 Memcached 集群领域的新手

如果我有一个使用 memcache 的 php web 应用程序 - 它如何执行哈希运算并决定检查哪个节点以获取特定值以避免必须检查它们全部。

奖励:如何轻松添加节点以避免重建所有哈希值。

答案1

Memcache 客户端通过对键值进行哈希处理来了解要检查哪个节点。默认情况下,它使用键的 crc32 值。在旧样式中,您可以执行以下操作

serverId = crc32(key) % servers.size

这意味着当您添加新的服务器节点时,大多数内容都会重新映射到不同的节点。

作为奖励,请使用新样式,其中每个节点覆盖由随机选择的服务器编号(而不是每个第 N 个值)确定的 crc 值的线性范围。这称为一致性哈希。

相关内容