任何 memcache API/wrapper 都可以。您甚至可以通过 PHP 的 CURL 方法构建您自己的。
1)是否每个请求都会拉动所有服务器并导致网络延迟?
不。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在出现故障、NOT_FOUND、超时等时“去钓鱼”到下一个服务器。可能会有一些网络延迟,但比与数据库交互要少得多。如果您担心 I/O 和延迟,您应该能够在您的应用程序中构建一个简单的解决方案。
2) 是否仍会向离线服务器发出请求?
由你决定。尽管系统已关闭,但您的应用程序可能仍在尝试连接到它。如果您决定使用 PECL 的 memcache API,您的应用程序应该能够识别 memcached 是否在任何给定服务器上正常运行。内存缓存::checkServerStatus
2.1) memcache.allow_failover 是做什么的?
这正是它所说的。如果您有 memcached 服务器A、B和D。服务器A宕机。两个选项都会发出 USER_NOTICE;但是,memcache.allow_failover=1
将继续对服务器B进行读写,并允许读写。当memcache.allow_failover=0
所有 memcache I/O 将优雅地返回 false 时。
查看文档。
3) Memcached 服务器报告
Memcached 提供了一个stats
命令,PECL 的 memcache 也提供了一个状态方法。但是它们与内存/平板统计信息有关。如果您想要使用情况的监控报告,请查看New Relic