2010-06-18 47 views
6

我想知道Memcached在磁盘缓存的远程服务器(在同一个局域网上)的性能。除Memcached是一个可扩展的缓存解决方案,会有使用Memcached相对于性能与磁盘缓存相比。MemCached与磁盘缓存的性能比较

Regards, Mugil。

回答

7

从我个人的经验来看,memcached并没有磁盘缓存那么快。我相信这是因为操作系统的磁盘IO缓存,但memcached允许“可扩展”的缓存,这意味着如果你有超过1台服务器访问相同的缓存数据,它将会扩展(尤其是因为memcached的CPU开销比较低到PHP)。允许多台机器同时访问磁盘缓存的唯一方法是网络安装,这肯定会消除访问速度。另外一件你不得不担心的文件缓存是垃圾收集,以防止磁盘饱和。当您的网站规模扩大时,您可能想稍后改变主意,因此无论您做出什么选择,都可以使用缓存包装器,以便您轻松更改方法。 Zend提供了一个good API

2

读取速度大致相同(因为操作系统会缓存经常访问的文件)......区别在于写入。有了memcached,它所需要做的就是编写内存。但是对于文件存储,它会变得更加棘手。如果您启用了写入缓存,则速度将会一样快。但是大多数服务器都会关闭它(除非它们有电池支持的缓存),以便在电源故障时进行更可靠的写入。因此,如果你的系统没有使用写入缓存,那么在返回之前,需要在磁盘上完成写入操作(在服务器级驱动器上可能需要5ms以上,可能在桌面级硬件上更多)。所以编写文件可能会比memcached慢得多。

但还有另一个caviat。有了文件,当你想写的时候,你需要自己锁定文件。这意味着如果两个进程尝试写入同一个文件,则写入操作必须连续完成。使用memcached时,这两个写入会按照接收到的顺序进入队列,但写入过程(PHP)不需要等待实际提交...