日期:2014-05-16  浏览次数:20313 次

Memcached 笔记

1. Memchae是什么

Memcache danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

它可以应对任意多个连接,使用非阻塞的网络 IO 。由于它的工作机制是在内存中开辟一块空间,然后建立一个 HashTable Memcached 自管理这些 HashTable

???

为什么会有 Memcache memcached 两种名称?

其实 Memcache 是这个项目的名称,而 memcached 是它服务器端的主程序文件名,

Memcache 官方网站: http://www.danga.com/memcached

2.Memcached的工作原理

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key ,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

?

与许多 cache 工具类似, Memcached 的原理并不复杂。它采用了 C/S 的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip ,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。 Memcached 的目前版本是通过 C 实现,采用了单进程,单线程,异步 I/O ,基于事件 (event_based) 的服务方式 . 使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server