使用memcached /一致性散列处理过时的数据

时间:2012-12-19 07:41:21

标签: memcached high-availability spymemcached consistent-hashing

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

假设最初在服务器A处使用键“ foo ”的值现在将映射到服务器C.

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

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

2 个答案:

答案 0 :(得分:2)

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

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

希望回答你的问题。

答案 1 :(得分:2)

你的问题归结为"你的缓存中的数据陈旧&#34 ;;那么如何纠正呢?

因此您需要使用最新值更新缓存。我不认为有任何替代方案。 您可以根据系统要求考虑不同的方法来优化它。