我想知道 Memcached 在远程服务器(在同一 LAN 上)与磁盘缓存的性能。除了 Memcached 是一种可扩展的缓存解决方案之外,与磁盘缓存相比,使用 Memcached 在性能方面是否有任何优势。
问候,穆吉尔。
根据我的个人经验,我发现 memcached 不如磁盘缓存快。我相信这是因为操作系统的磁盘 IO 缓存,但 memcached 允许“可扩展”缓存,这意味着如果您有超过 1 台服务器访问相同的缓存数据,它会扩展(特别是因为 memcached 相比 CPU 开销非常低到 PHP)。允许多台机器同时访问磁盘缓存的唯一方法是网络挂载,这肯定会降低访问速度。对于文件缓存,您还需要担心的另一件事是垃圾收集以防止磁盘饱和。
随着您的网站规模扩大,您可能希望稍后改变主意,因此无论您做出何种选择,请使用缓存包装器,这样您就可以轻松更改方法。Zend 提供了一个很好的 API。
读取速度将大致相同(因为操作系统将缓存经常访问的文件)......不同之处在于写入。使用 memcached,它需要做的就是写内存。但是对于文件存储,它变得有点棘手。如果您启用了写入缓存,它会一样快。但是大多数服务器都关闭了它(除非它们有电池支持的缓存),以便在电源故障的情况下进行更可靠的写入。因此,如果您的未使用写入缓存,则需要在返回之前在磁盘上完成写入(在服务器级驱动器上可能需要 5+ 毫秒,在桌面级硬件上可能需要更多时间)。所以写文件可能比 memcached 慢很多。
但还有另一种鱼子酱。对于文件,当您要写入时,您需要自己锁定文件。这意味着如果两个进程尝试写入同一个文件,则写入必须串行完成。使用 memcached,这两个写入被推入队列并按接收顺序发生,但写入过程 (PHP) 不需要等待实际提交......