6

假设我一开始有两个 memcached 节点(节点 A,B),当我添加一个新节点 C时,部分键被重新映射,并且由于一致散列,只有其中一些键被重新映射。

让我们假设最初在服务器 A 的键为“ foo ”的值现在被映射到服务器 C。

当我最终删除节点 C 时,密钥应该再次映射到节点 A,但当时节点 A 仅包含陈旧数据。

那么,刷新数据是解决这个问题的唯一方法吗?

4

2 回答 2

2

您的问题归结为“缓存中的数据已过时”;那么如何纠正呢?

所以你需要 用最新的值更新缓存。我认为没有其他选择。您可以根据系统要求考虑不同的方法来优化它。

于 2012-12-26T09:26:01.543 回答
2

我认为你对陈旧数据唯一要做的就是......什么都没有!你知道如果你引入一个新的服务器,部分缓存会失效。就这样!当那一刻到来时,让 memcached 为您摆脱陈旧的数据!

另一件事是您无法自己摆脱陈旧的对象,因为您不知道哪个服务器存储该对象(感谢一致的哈希算法)。

希望回答你的问题。

于 2012-12-21T08:57:04.840 回答