转载:http://www.cnblogs.com/lovecindywang/archive/2010/05/19/1739025.html
Memcache的优势我觉得总结下来主要体现在:
1) 分布式。可以由10台拥有4G内存的机器,构成一个40G的内存池,如果觉得还不够大可以增加机器,这样一个大的内存池,完全可以把大部分热点业务数据保存进去,由内存来阻挡大部分对数据库读的请求,对数据库释放可观的压力。
2) 单点。如果Web服务器或App服务器做负载均衡的话,在各自内存中保存的缓存可能各不相同,如果数据需要同步的话,比较麻烦(各自自己过期,还是分发数据同步?),即使数据并不需要同步,用户也可能因为数据的不一致而产生用户体验上的不友好。
3) 性能强。不用怀疑和数据库相比确实是,根源上还是内存的读写和磁盘读写效率上几个数量级的差距。有的时候我们在抱怨数据库读写太差的情况下可以看看磁盘的IO,如果确实是瓶颈的话装啥强劲的数据库估计也档不了,强不强无非是这个数据库多少充分的利用了内存。
但是也不太建议在任何情况下使用Memcache替代任何缓存:
1)
如果Value特别大,不太适合。因为在默认编译下Memcache只支持1M的Value(Key的限制到不是最大的问题)。其实从实践的角度来说也不
建议把非常大的数据保存在Memcache中,因为有序列化反序列化的过程,别小看它消耗的CPU。说到这个就要提一下,我一直觉得Memcache适合
面向输出的内容缓存,而不是面向处理的数据缓存,也就是不太适合把大块数据放进去拿出来处理之后再放进去,而是适合拿出来就直接给输出了,或是拿出来不需
要处理直接用。
2)
如果不允许过期,不太适合。Memcache在默认情况下最大30天过期,而且在内存达到使用限制后它也会回收最少使用的数据。因此,如果我们要把它当作
static变量的话就要考虑到这个问题,必须有重新初始化数据的过程。其实应该这么想,既然是缓存就是拿到了存起来,如果没有必定有一个重新获取重新缓
存的过程,而不是想着它永远存在。
在使用Memcache的过程中当然也会有一些问题或者说最佳实践:
1)
清除部分数据的问题。Memcache只是一个Key/Value的池,一个公共汽车谁都可以上。我觉得对于类似的公共资源,如果用的人都按照自己的规则
来的话很容易出现问题。因此,最好在Key值的规范上上使用类似命名空间的概念,
每一个用户都能很明确的知道某一块功能的Key的范围,或者说前缀。带来的好处是我们如果需要清空的话可以根据这个规范找到我们自己的一批Key然后再去
清空,而不是清空所有的。当然有人是采用版本升级的概念,老的Key就让它过去吧,到时候自然会清空,这也是一种办法。不过Key有规范总是有好处的,在
统计上也方便一点。
2)
Value的组织问题。也就是说我们存的数据的粒度,比如要保存一个列表,是一个保存在一个键值还是统一保存为一个键值,这取决于业务。如果粒度很小的话
最好是在获取的时候能批量获取,在保存的时候也能批量保存。对于跨网络的调用次数越少越好,可以想一下,如果一个页面需要输出100行数据,每一个数据都
需要获取一次,一个页面进行上百次连接这个性能会不会成问题。
那么Memcache主要用在哪些功能上呢?
其实我觉得平时能想到在内存中做缓存的地方我们都可以考虑下是不是可以去适用分布式缓存,但是主要的用途还是用来在前端或中部挡一下读的需求来释放Web服务器App服务器以及DB的压力。
分享到:
相关推荐
Java开发中的Memcache原理及实现
Java开发中的Memcache原理及实现
适合于PHP5.4.3版本,通过memcache可以对数据读取速度进行优化,有效加快web的访问速度。
memcache的配置及使用——memcache及其客户端telnet
终于解决PHP 5.3.3版本无法加载php_memcache.dll模块。 亲测可用,安全无毒,放心使用!!!! 具体描述如下: ====================== 文件包含: WampServer2.1a-x32.rar(PHP官网下载) memcached.exe ...
windows下memcache安装包 附带php扩展包
memcache图形监控工具phpmemcache,尽是一个PHP文件就可以实现对memcache的监控。 使用方法:本地测试监控机安装Apache或者下载XAMPP(Apache+MySQL+PHP+PERL),安装后把memcachephp.zip中的memcache.php文件放到...
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问。
linux环境安装memcache和php的memcache扩展的方法!!!
将信息保持memcache中
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从...
C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档
最新windows的memcache模块下载 这个模块是平和php5.3的,在我的windowsxp php5.3.5上安装成功 里面有两个php库,一个php_memcache.dll.vc6 和一个php_memcache.dll.vc9 另外一个windows的memcache.exe文件,都是网上...
Memcache就不用多介绍了,做开发的人都知道。 但要用得好,却并不是那么容易的事。 如果用得不好,反而得不偿失。 这篇文档短小精悍,囊括了使用过程中需要要注意的方方面面。值得一读。
memcache windows版本下载安装 附件php_memcache.dll(php 5.2适用 其他版本不知道是否可以) 具体安装见附件的安装说明 memcache windows安装,memcache windows下载,memcache下载
这个助手类主要特点,Memcache连接复用,一个http请求只使用一个Memcache连接,使用Key前缀,使多个项目共享Memcache实例,这个助手类可用于任意框架(codeigniter可放于helper文件夹下).
MemCache.0.2.0.zip Memcached Client for Delphi 客户端调用类 MemCache.0.2.0.zip Show all LinksExternal links Memcached Project This project is a delphi unit which implements a thread safe client for ...
memcache安装及常见错误; memache+keepalive集群配置
简单的memcache命令
Erlang_Memcache