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

memcache/php最佳实践-多memcache节点,php,memcached,scalability,Php,Memcached,Scalability,因此,我正在开发一个web应用程序——它必须为可伸缩性而构建。它将频繁的MySQL查询存储到缓存中。我已经准备好了几乎所有的东西,但我关心的是处理数据缓存位置的最佳实践。我和一些人谈过,其中一人建议在所有memcache节点上拆分每个键/值 这意味着如果我存储示例:“somekey”,“this is the value” 它将被分成3个memcache服务器 这是更好的方法吗?或者memcache更多地建立在1对1的关系上?。比如说 在服务器A上存储值,直到它出现故障-转到服务器B并存储在那里

因此,我正在开发一个web应用程序——它必须为可伸缩性而构建。它将频繁的MySQL查询存储到缓存中。我已经准备好了几乎所有的东西,但我关心的是处理数据缓存位置的最佳实践。我和一些人谈过,其中一人建议在所有memcache节点上拆分每个键/值

这意味着如果我存储示例:“somekey”,“this is the value”

它将被分成3个memcache服务器

这是更好的方法吗?或者memcache更多地建立在1对1的关系上?。比如说

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

这是我目前对memcache的理解,这是我所做的研究和过去使用memcache的经验得出的结论

有没有人能给我指出正确的方向,让我知道哪条路最好,或者我是否完全混淆了


谢谢

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

这样,如果memcache服务器宕机,您的密钥将不会被重新分配:)

根据我的经验,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_键(1234)返回“abc”,因为A现在可用


-daniel

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

这样,如果memcache服务器宕机,您的密钥将不会被重新分配:)

根据我的经验,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_键(1234)返回“abc”,因为A现在可用

-丹尼尔