Memcached简介

Memcached danga.com (运营 LiveJournal 的技术团队)开发的一套分布式内存对象缓存系统
 
用于在动态系统中减少数据库负载,提升性能。
 
通过对 memcached 的实现及代码分析,获得对这个出色的开源软件更深入的了解,
并可以根据我们的需要对其进行更进一步的优化。
末了将通过对 BSM_Memcache 扩展的分析,加深对 memcached 的使用方式理解。
 
 
Memcached 是什么
Memcached 是分布式的,也就是说它不是本地的,它基于网络连接(当然它也可以使用 localhost )方式完成服务,本身它是一个独立于应用的程序或守护进程( Daemon 方式)。
 
Memcached使用 libevent库实现网络连接服务,理论上可以处理无限多的连接,但是它和 Apache不同,它更多的时候是面向 稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下 memcached的最大同时连接数为 200,这和 Linux线程能力有关系,这个数值是可以调整的。关于 libevent可以参考相关文档。 Memcached内存使用方式也和 APC不同。 APC是基于共享内存和 MMAP的, memcachd有自己的内存分配算法和管理方式,它和共享内存没有关系,也没有共享内存的限制,通常情况下, 每个memcached进程可以管理2GB的内存空间,如果需要更多的空间,可以增加进程数。  
 
◎Memcached 适合什么场合
在很多时候, memcached都被滥用了,这当然少不了对它的抱怨。我经常在论坛上看见有人发贴,类似于 如何提高效率 ,回复是 memcached”,至于怎么用,用在哪里,用来干什么一句没有。 memcached不是万能的,它也不是适用在所有场合。
Memcached分布式 内存对象缓存系统,那么就是说,那些不需要 分布 的,不需要共享的,或者干脆规模小到只有一台服务器的应用, memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,即使是 UNIX本地连接也一样。 在我之前的测试数据中显示, memcached本地读写速度要比直接 PHP内存数组慢几十倍,而 APC、共享内存方式都和直接数组差不多。可见, 如果只是本地级缓存,使用memcached是非常不划算的
 
Memcached在很多时候都是作为 数据库前端cache使用的。因为它比数据库少了很多 SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能,在大型系统中, 访问同样的数据是很频繁的memcached可以大大降低数据库压力,使系统执行效率提升。另外, memcached也经常作为服务器之间数据共享的存储媒介,例如在 SSO系统中保存系统单点登陆状态的数据就可以保存在 memcached中,被多个应用共享。
需要注意的是, memcached使用内存管理数据,所以它是易失的,当服务器重启,或者 memcached进程中止,数据便会丢失,所以 memcached不能用来持久保存数据。很多人的错误理解, memcached的性能非常好,好到了内存和硬盘的对比程度,其实 memcached使用内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接,它和使用磁盘的数据库系统相比,好处在于它本身非常 ,因为没有过多的开销和直接的读写方式,它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆网络带宽都满负荷了, memcached进程本身并不占用多少 CPU资源的情况。

你可能感兴趣的:(memcached,职场,休闲)