Memcache:困惑

时间:2012-08-02 13:30:41

标签: php caching memcached scalability

我将在我的PHP应用程序中使用memcache(而不是memcacheD)。我很少有困惑。

我为memcache找到了this wrapper类。

1)在连接方法上,它添加了要拉的所有服务器。如果在每一个请求上都这样做,它会不会减慢网络延迟的持久性原因?

2)如果池中有2台服务器且一台服务器处于脱机状态,那么仍然会向离线服务器发出请求?没有其他方法可以自动从memcache中删除脱机服务器?如果没有memcache.allow_failover = 1设置怎么办?

3)有没有办法查看哪个缓存请求由哪个memcache服务器提供服务?

1 个答案:

答案 0 :(得分:2)

任何memcache API /包装都可以。您甚至可以通过PHP的CURL方法构建自己的方法。

1)每一个请求都会拉动所有服务器&导致网络延迟?

没有。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在发生故障时“go-fish”到下一个服务器,NOT_FOUND,timeout,& tc。可能存在一些网络延迟,但 lot 少于与数据库交互。如果您担心I / O&延迟,你应该能够在你的应用程序中构建一个简单的解决方案。

2)是否仍会请求离线服务器?

由你决定。虽然系统已关闭,但您的应用程序可能仍在尝试连接到它。如果您决定使用PECL的memcache API,您的应用程序应该能够识别memcached是否在任何给定服务器上正常运行。 Memcache::checkServerStatus

2.1)memcache.allow_failover做了什么?

这正是它所说的。如果您有memcached服务器 A B D 。服务器 A 会停止运行。这两个选项都会发出USER_NOTICE; 然而memcache.allow_failover=1将继续服务器 B ,并允许读写。当memcache.allow_failover=0所有内存缓存I / O将返回false 正常时。

结帐docs

3)Memcached服务器报告

Memcached提供stats命令,PECL的memcache也提供status方法。但是它们与内存/平板统计有关。如果您想要使用监控报告,请查看New Relic