memcache / php的最佳实践 - 多个memcache节点

时间:2010-12-07 17:09:40

标签: php memcached scalability

所以我正在开发一个Web应用程序 - 必须构建它以实现可伸缩性。它将频繁的MySQL查询存储到缓存中。我已经构建了很多东西并准备好了 - 但是我担心处理缓存数据的地方的最佳实践。我和几个人交谈过,其中一个人建议在所有memcache节点上拆分每个键/值。

如果我存储示例的意思:'somekey','这是值'

它将被拆分为3个内存缓存服务器。

那是更好的方法吗?或者memcache是​​建立在1对1关系上的吗?例如。

在服务器A上存储值,直到它出现故障 - 转到服务器B并存储在那里。

这是我目前对我所做的研究和过去使用memcache的经验的理解。

有人可以指出我在这方面的正确方向,让我知道哪种方式最好,或者我是否完全混淆了。

由于

1 个答案:

答案 0 :(得分:0)

我会在php中使用一致的哈希

请参阅http://php.net/manual/en/memcached.constants.php

这样,如果内存缓存服务器出现故障,您的密钥将不会被重新分发:)

根据我的经验,memcache服务器非常可靠,并且通常会因操作系统升级而重新启动。

如果您不使用一致性哈希,那么如果服务器熄灭并返回,那么您可能在该服务器上缓存了一段旧数据。

IE Memcache服务器A,B

A: set key = 1234, value = 'abc', expires = 1 day
B:
after a time
A: vanishes
B: get key = 1234
   returns nothing
B: set key = 1234, value = 'def', exipres = 1 day
after more time
A: comes back!

get_key(1234)返回'abc',因为A现在可用。!

-daniel