摘自:http://blog.developers.api.sina.com.cn
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
◎Memcached是什么
在阐述这个问题之前,我们首先要清楚它“不是什么”。很多人把它当作和SharedMemory那种形式的存储载体来使用,虽然memcached
使用了同样的“Key=>Value”方式组织数据,但是它和共享内存、APC等本地缓存有非常大的区别。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资源的情况。
分享到:
相关推荐
**Memcache简介** Memcache是一种高性能的分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。其工作原理是将数据存储在内存中,以便快速检索,从而减少了对数据库的直接...
### 一、Memcache简介 Memcache最初由Danga Interactive公司开发,现已成为开源项目,被许多大型网站如Facebook、Twitter等采用。它的设计目标是提供一个轻量级的解决方案,用于临时存储热数据,以减少对持久存储...
#### 一、Spring与Memcache简介 - **Spring**:Spring框架是Java平台上的一个开源应用框架,提供了一种简单的方式来管理对象生命周期以及依赖关系,同时也支持AOP(面向切面编程)等功能。Spring框架的核心特性包括...
**一、MemCache简介** MemCache是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高应用程序的性能。它通过将数据存储在内存中,实现快速访问,避免了频繁读取硬盘上的数据库。...
### Memcache简介 Memcache是一种高性能、分布式内存对象缓存系统,它能够减少数据库的访问压力,并通过在内存中缓存数据来提高动态Web应用的速度。Memcache支持多种语言,如PHP、Python等,其中在PHP中的应用尤为...
### Memcache简介 Memcache是一种分布式内存对象缓存系统,它可以存储数据片段(如数据库查询结果)在内存中,避免每次请求都去查询数据库。这种技术极大地提高了动态网站的响应速度。Memcache支持多种编程语言,...
#### Memcache简介及其在高流量网站中的作用 在高流量网站中,为了缓解数据库的压力并提高网站响应速度,通常会采用Memcache作为缓存解决方案。Memcache是一种高性能、分布式内存对象缓存系统,它通过减轻数据库...
**分布式缓存与Memcache简介** 分布式缓存是一种在分布式系统中存储数据的机制,它通过将数据分散在多台服务器上,提高了系统的可扩展性和性能。这种技术常用于减轻数据库的压力,加速读取频繁访问的数据。Memcache...
#### Memcache简介 Memcache是一种高性能、分布式内存对象缓存系统,用于加速动态Web应用通过减轻数据库负担。它通过在内存中缓存数据和对象来减少读写数据库的次数,从而提高网站的速度和响应能力。Memcache支持...
一、Memcache简介 Memcache最初是为LiveJournal服务的项目,由danga.com开发。它是一个高性能的、分布式的内存对象缓存系统,能够在内存中存储数据并提供快速访问。Memcache采用非阻塞的网络IO模型,能够处理大量...
**一、Memcache简介** Memcache是一款高性能、分布式的内存对象缓存系统,最初设计用于加速动态Web应用,通过减少数据库负载来提升性能。它将数据存储在内存中,以键值对的形式供应用快速访问,适用于存储临时性的、...
**一、Memcache 简介** Memcache 是一款开源的、高性能、分布式的内存对象缓存系统。它被设计用来减轻数据库的压力,通过在内存中缓存经常访问的数据来提高动态Web应用的性能。由于数据存储在内存中,因此读取速度...
【Memcache简介】 Memcache是一款高性能的分布式内存对象缓存系统,用于临时存储(缓存)中间结果,以减少数据库负载。它的工作原理是将数据存放在内存中,而不是硬盘上,因此读取速度极快。在PHP中,通过Memcache...
一、Memcache简介 Memcache是由Danga Interactive开发的一个高性能、分布式内存对象缓存系统,适用于动态Web应用以减轻数据库负载。它的主要设计目标是通过将数据存储在内存中,快速地获取和存储数据,从而减少对...
### 1.1 Memcache简介 Memcached最初由Danga Interactive公司开发,后来成为开源项目。它是一个基于内存的缓存服务,适用于存储小块的数据,如字符串、JSON对象等。Memcached的设计目标是轻量级且高效,适合快速...
**memcached和php_memcache简介** `memcached`是一个高性能、分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,通过将数据和对象存储在内存中,以加快读取速度。它最初由Dustin S. McWharter开发,并在...
memcache简介 Memcache是一种高性能的、分布式的内存对象缓存系统,它可以将数据存储在内存中,以加快读取速度。由于数据存储在内存中,因此读取速度非常快,适用于处理大量小数据的快速访问场景。 ### 2. 安装...
##### 2.1 Memcache简介 Memcache是一种高性能、分布式内存对象缓存系统,通过减轻数据库负载来加速动态Web应用程序的运行速度。它通过在内存中缓存数据,避免了频繁访问数据库所带来的延迟问题,从而提高了整个系统...
MemCache简介 ##### 简单解释 Memcached是一种高性能、分布式的内存对象缓存系统,被广泛应用于加速Web应用并减少数据库的访问压力。通过缓存数据和对象在内存中,Memcached能够显著提高动态网页的响应速度,降低...
### Memcache简介 尽管标题“Memcache 字字字”似乎没有提供足够的信息来明确指出所讨论的具体内容,但从标题中我们可以推测这可能与Memcache有关。Memcache是一种高性能、分布式内存对象缓存系统,用于加速动态Web...