哪个更快/更好的缓存,文件系统或Memcached?

Lan*_*ard 27 filesystems performance memcached caching

我觉得我还不清楚,从文件或memcached中读取内容会更快吗?为什么?

gbl*_*zex 31

Memcached更快,但内存有限.硬盘很大,但I/O比内存慢.你应该把最热门的东西放到memcached中,其他所有东西可以用来缓存文件.
(或者像这些人一样投入一些钱投入更多的记忆:)

对于某些基准测试,请参阅:缓存性能比较(文件,Memcached,查询缓存,APC)

理论上:

Read 1 MB sequentially from memory       250,000 ns
Disk seek                             10,000,000 ns
Run Code Online (Sandbox Code Playgroud)

http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf

  • 您链接的基准显示与您的语句完全相反 - Memcached比从本地磁盘读取要慢.你能澄清一下这些差异吗? (7认同)

Jam*_*s C 14

有很多不同的方面可能有利于其中一个:

  • 您是否需要/想要在多个服务器之间共享此数据?文件系统是本地的,memcached是通过网络访问的.
  • 你的缓存项目有多大?对于大型对象,文件系统可能更好.
  • 每页可能有多少个memcached请求?TCP连接和拆除可能比本地计算机上的简单文件系统stat()占用更多时间.

我建议你看看你的用例并对这两种方法进行一些分析.如果您可以使用文件系统,那么我会.添加memcached会增加另一层复杂性和潜在的故障点(memcached客户端/服务器).

对于它的价值而言,关于磁盘与内存性能的其他评论可能是学术性的,就像文件系统数据被定期访问一样,然后它可能会坐在操作系统或磁盘缓存中.


小智 5

没有上下文就不能使用"更快".例如,由于网络延迟,访问远程服务器上的memcached中的数据可能会"更慢".另一方面,通过10Gb网络从远程服务器内存读取数据比从本地磁盘读取相同数据"更快".

文件系统缓存和使用memcached的主要区别在于memcached是一个完整的缓存解决方案.因此有LRU列表,到期概念(数据新鲜度),一些高级操作,如cas/inc/dec/append/prepend/replace.

Memcached易于部署和监控(我们如何区分文件系统上的"缓存"工作负载,比如内核?我们可以计算缓存数据的总量吗?数据分布?容量规划?等等).

还有一些混合系统,比如cachelot 基本上,它的memcached可以直接嵌入到应用程序中,因此可以在没有任何系统调用或网络IO的情况下访问缓存.