内存缓存:混乱

Posted

技术标签:

【中文标题】内存缓存:混乱【英文标题】:Memcache : Confusions 【发布时间】:2012-07-31 11:38:52 【问题描述】:

我将在我的 php 应用程序中使用 memcache(不是 memcacheD)。我没有什么困惑。

我找到了this wrapper 内存缓存类。

1) 与连接方法一样,它会添加所有要拉取的服务器。如果对每个请求都执行此操作,是否会减慢网络延迟的永久性原因?

2) 如果池中有 2 台服务器并且其中一台脱机,请求仍会发送到脱机服务器?没有其他方法可以从 memcache 中自动删除离线服务器吗?如果不是 memcache.allow_failover = 1 设置做什么?

3) 有没有办法查看哪个内存缓存服务器服务了多少缓存请求?

【问题讨论】:

【参考方案1】:

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

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

没有。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在出现故障、NOT_FOUND、超时等时“去钓鱼”到下一个服务器。可能会有一些网络延迟,但很多比与数据库交互要少。如果您担心 I/O 和延迟,您应该能够在您的应用程序中构建一个简单的解决方案。

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

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

2.1) memcache.allow_failover 是做什么的?

这正是它所说的。如果您有 memcached 服务器 ABD。服务器 A 出现故障。两个选项都会发出 USER_NOTICE; 然而memcache.allow_failover=1 将继续服务器 B,并允许读取和写入。当memcache.allow_failover=0 所有memcache I/O 将返回false 优雅

查看docs。

3) Memcached 服务器报告

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

【讨论】:

以上是关于内存缓存:混乱的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 内存缓存与磁盘缓存

内存缓存与。内存缓存 [重复]

如何为linux释放内存和缓存

电脑缓存不够了,咋办?

CPU缓存与内存屏障解析

浅谈缓存写法:内存缓存该如何设计