如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点。
文件缓存优点:
1、由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇文章,生成的文件大小总数可能就会很大。
2、数据的存放较为安全,由于是硬盘存放,所以在意外掉电的情况下,缓存文件不会丢失。
3、易于扩展,如果硬盘不够用,可以更换大硬盘或者添加硬盘,在容量上受的限制很小。
文件缓存缺点:
1、高并发时,硬盘的读写性能大幅度降低。
2、网站pv持续很高的情况下,硬盘寿命大大降低。

memcached优点:
1、读写性能优异,特别是高并发时和文件缓存比有明显优势。
2、memcached组建支持集群,并且是自动管理负载均衡。
memcached缺点:
1、缓存空间有限:据说一台电脑的mem缓存开到2g以上会出现不稳定,数据无故丢失的现象。
2、掉电丢失数据:由于是把数据放在内存里的,所有一旦机器掉电,数据也就全部丢失了。

一般建议:如果是做内容缓存的话,比如把一些不经常更改的文章放在文件缓存里比较合适,而mem则适合放一些频繁更改的数据,比如可以把session数据放进mem。

文件缓存耗IO、过期时间自行控制、不费带宽、不易采用分布式。
cache缓存耗内存、过期时间由cache控制、稍占带宽、易采用分布式。

在实际项目应用中,可以联合使用memcache和文件类型缓存。根据热度来把最热的数据放在内存里面。然后把一般的数据放在文件缓存中。

读取数据时,可以按照 memcache=>file_cache=>databases
这样的递归来处理。最大程度的利用缓存来减轻数据库的查询压力。

另外session不能放在内存里面。可以用redis存储session.定时把内存数据刷新到硬盘。这样万一断电或者其他故障,不至于所有session都失效。

memcache 的使用场景是:当你有大量的数据 >2G 大小,而这些数据是 有可能被很频繁的读写时,memcache可以使用集群,不但跨进程,而且跨机器。

文件缓存,现在较少使用了。因为磁盘io的随机定位是10ms 左右,而且磁盘io太频繁的话,会拖慢整个服务器的处理性能。也没办法支持高并发。

现在的大部分的时候都是将计算和io区分开,可以保证各自的性能。计算可以放到数据库去做,比如查询 ,连表啊 啥的。
io就nosql吧 这样支持高并发好点。

http://zzstudy.offcn.com/archives/10009

PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】的更多相关文章

  1. Nginx使用教程(八):使用Nginx缓存之Memcached缓存

    使用Memcache <br\>Memcache是一个通用的内存缓存系统. 它通常用于加速缓慢的数据访问. NGINXmemcached模块提供各种指令,可以配置为直接访问Memcache ...

  2. Memcached缓存入门篇

    Asp.Net中使用Couchbase——Memcached缓存入门篇 前言 本文的主要目的就是简单的进行使用Memcached.这是Memchahed的官网http://memcached.org/ ...

  3. Asp.Net中使用Couchbase——Memcached缓存使用篇

    Asp.Net中使用Couchbase——Memcached缓存使用篇 前言 在上一篇Asp.Net中使用Couchbase——Memcached缓存入门篇http://www.cnblogs.com ...

  4. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

  5. 高性能的分布式内存对象缓存系统Memcached

    Memcached概述   什么是Memcached? 先看看下面几个概念: Memory:内存存储,不言而喻,速度快,对于内存的要求高,不指出的话所缓存的内容非持久化.对于CPU要求很低,所以常常采 ...

  6. MemCached缓存操作

    Web项目在运行时,通常需要从数据库中进行读写.随着操作数据量的增大,以及访问量的集中,数据库的负载增加,数据库响应变慢,网站访问速度变慢的情况.Memcached就是用来解决这些问题的. Memca ...

  7. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  8. 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)

    硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...

  9. 分布式缓存系统Memcached简介与实践

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

随机推荐

  1. mysql中的comment用法

    转自:http://wenku.baidu.com/view/2a54e7892cc58bd63186bd8f.html 在MySQL数据库中,字段或列的注释是用属性comment来添加. 创建新表的 ...

  2. Linux kernel perf_swevent_init Local root Exploit

    64位上编译 另外修改了原Exploit的一个错误 第76行 把     uint64_t *p = (void *) ¤t[i]; 改成       uint64_t *p = (void *) & ...

  3. 使用AuthDBMType指令支持多种类似DBM的数据库

    Unix线程 在支持POSIX线程的Unix系统上,现在Apache能在混合的多进程.多线程模式下运行,使很多(但非全部)配置的可伸缩性得到了改善. 新的编译系统 重写了编译系统,现在是基于autoc ...

  4. Symantec更新服务器

    HTTP liveupdate.symantec.com liveupdate.symantecliveupdate.com   FTP update.symantec.com/opt/content ...

  5. 约跑APP测试报告

    用户需求规格说明书URL:http://www.cnblogs.com/liquan/p/6071804.html 组长博客URL:http://www.cnblogs.com/liquan/ 代码g ...

  6. Uncaught RangeError: Maximum call stack size exceeded解决思路

    今天突然碰到这样的JavaScript错误:Uncaught RangeError: Maximum call stack size exceeded 这个翻译过来就是堆栈溢出了. 1.原因:有小类到 ...

  7. Javascript 统计复选框选中个数

    var checked = document.getElementsByName("checked_c[]"); var checked_counts = 0; for(var i ...

  8. 循环btn上面的视图

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  9. jquery选中将select下拉框中一项后赋值给text文本框

    jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件. ...

  10. 基础C++ functional

    函数对象:可以定义函数对象. sort(this->sprites.begin(), this->sprites.end(), [](const struct SpriteInfo &am ...