我觉得我还不清楚,从文件或memcached中读取内容会更快吗?为什么?
Memcached更快,但内存有限.硬盘很大,但I/O比内存慢.你应该把最热门的东西放到memcached中,其他所有东西都可以用来缓存文件.
(或者像这些人一样投入一些钱投入更多的记忆:)
对于某些基准测试,请参阅:缓存性能比较(文件,Memcached,查询缓存,APC)
理论上:
Read 1 MB sequentially from memory 250,000 ns Disk seek 10,000,000 ns
http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf
有很多不同的方面可能有利于其中一个:
您是否需要/想要在多个服务器之间共享此数据?文件系统是本地的,memcached是通过网络访问的.
你的缓存项目有多大?对于大型对象,文件系统可能更好.
每页可能有多少个memcached请求?TCP连接和拆除可能比本地计算机上的简单文件系统stat()占用更多时间.
我建议你看看你的用例并对这两种方法进行一些分析.如果您可以使用文件系统,那么我会.添加memcached会增加另一层复杂性和潜在的故障点(memcached客户端/服务器).
对于它的价值而言,关于磁盘与内存性能的其他评论可能是学术性的,就像文件系统数据被定期访问一样,然后它可能会坐在操作系统或磁盘缓存中.
没有上下文就不能使用"更快".例如,由于网络延迟,访问远程服务器上的memcached中的数据可能会"更慢".另一方面,通过10Gb网络从远程服务器内存读取数据比从本地磁盘读取相同数据"更快".
文件系统缓存和使用memcached的主要区别在于memcached是一个完整的缓存解决方案.因此有LRU列表,到期概念(数据新鲜度),一些高级操作,如cas/inc/dec/append/prepend/replace.
Memcached易于部署和监控(我们如何区分文件系统上的"缓存"工作负载,比如内核?我们可以计算缓存数据的总量吗?数据分布?容量规划?等等).
还有一些混合系统,比如cachelot 基本上,它的memcached可以直接嵌入到应用程序中,因此可以在没有任何系统调用或网络IO的情况下访问缓存.