一、MemCached是什么?
MemCached是一个免费、开源、高性能、分布式、基于内存的对象缓存系统。一般来说,使用MemCached可以加速动态web程序(通过缓解数据库负载)。它可以key-value(String,Object)形式,存储任意数据,如数据库调用结果、API调用结果等。
MemCached主要由4部分组成:
1. 客户端软件,记录了所有有效MemCached服务器信息;
2. 一个基于客户端的hash算法,输入的key通过该算法找出特定MemCached服务器;
3. 服务器软件,在一个内部hash表中存储key-value;
4. 服务器算法,该算法决定何时请出旧数据以及重用内存。
MemCached的设计理念:
1. 简单Key/Value存储(每条记录包括一个key、一个原生value值、一个过期时间、一个可选的flag),并且不关心Value的类型,可以存放任意数据类型;
2. 逻辑分别放在客户端与服务器端;
3. 服务器端彼此无感知;
4. 所有操作时间复杂度为O(1);
5. 到期数据自动过期,释放出内存为其它应用使用。
理解误区:
不要理解为使用了MemCached会使程序跑得更快,MemCached只是一个开发工具,而不是代码加速器,或者可以理解为数据库中间件,MemCached会减少你与数据库的交互时间,从而感觉上是代码"变快"了。
二、MemCached架构图
项目主项:http://code.google.com/p/memcached/
本文出自:冯立彬的博客