Memcached教程

Memcached是什么

Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、hatena、Facebook、Vox、LiveJournal 等众多服务中提高 Web 应用扩展性的重要因素。

Memcached 是一种基于内存的 key-value 存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API 调用或者是页面渲染的结果。

Memcached 简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的 API 兼容大部分流行的开发语言。

Memcached诞生

在 Web 服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率。

除了能够提高服务的运行效率之外,服务端缓存还常常用来提高服务的扩展性。因此一些大规模的 Web 应用,如 Facebook,常常构建一个庞大的服务端缓存。而它们所最常使用的就是 Memcached。

Memcached 原本都只是内部团队的项目,后来觉得好用就都拿来用,Memcached 是 danga 的一个项目是用来加速一个社交网站 LiveJournal 而开发的一个高性能的分布式的内存对象缓存系统。

Memcached说明

很多人把 Memcached 当作和 SharedMemory 那种形式的存储载体来使用,虽然 memcached 使用了同样的 Key => Value 方式组织数据,但是它和共享内存、APC 等本地缓存有非常大的区别。Memcached 是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用 localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon 方式)。

Memcached 使用 libevent 库实现网络连接服务,理论上可以处理无限多的连接,但是它和 Apache 不同,它更多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下 memcached 的最大同时连接数为 200,这和 Linux 线程能力有关系,这个数值是可以调整的。

Memcached 内存使用方式也和 APC 不同。APC 是基于共享内存和 MMAP 的,memcachd 有自己的内存分配算法和管理方式,它和共享内存没有关系,也没有共享内存的限制,通常情况下,每个 memcached 进程可以管理 2GB 的内存空间,如果需要更多的空间,可以增加进程数。

Memcached教程总结

Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。