memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。memcached是分布式内存缓存服务器软件,最早运行在mixi上,最初的目的是为了解决大量mixi访问对数据库的压力,提高动态Web应用的速度、提高可扩展性,memcached当初的功能是缓存高命中率的data和object,工作原理如下:

 

 

由于memcached在mixi上表现卓越,memcached也渐渐被越来越多的高访问web运用,像hatenaFacebookVox、LiveJournal等,memcached也渐渐成为现在web架构中不可或缺的一位成员。现在越来越多的社区爱好者在不断维护着memcached。

memcached是基于libevent的事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。

欲了解更更多关于libevent:http://monkey.org/~provos/libevent/

memcached的安装其实很简单:

由于memcached是基于libevent的,因此需要安装libevent,libevent-devel

#  yum install  libevent libevent-devel -y

下载memcached的主程序包

# wget  http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

#  tar   zxvf  memcached-1.4.5.tar.gz

#  cd    memcached-1.4.5

#  ./configure --prefix=/usr/local/memcached  --with-libevent=/usr/lib 

注意:这是笔者编译出现了错误错误提示如下

不明白什么原因,去google了一下,加了个编译选项

#  ./configure --prefix=/usr/local/memcached  --with-libevent=/usr/lib -build=i686-pc-linux-gnu

编译成功,问题是解决了,但笔者不明白什么原因,难道是指令集的问题,关于这个i686-pc-linux-gnu,还请那位高人指点一下,不胜感谢!!!!

 

# make & make install

memcached安装成功了,下面是启动memcached

从终端输入以下命令,启动memcached。

$ /usr/local/bin/memcached -p 11211 -m 64m -vv
slab class   1: chunk size     88 perslab 11915
slab class   2: chunk size    112 perslab  9362
slab class   3: chunk size    144 perslab  7281
中间省略
slab class  38: chunk size 391224 perslab     2
slab class  39: chunk size 489032 perslab     2
<23 server listening
<24 send buffer was 110592, now 268435456
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)

 这里显示了调试信息。这样就在前台启动了memcached,监听TCP端口11211 最大内存使用量为64M。调试信息的内容大部分是关于存储的信息

作为daemon后台启动时

$ /usr/local/bin/memcached -p 11211 -m 64m -d

选项 说明
-p 使用的TCP端口。默认为11211
-m 最大内存大小。默认为64M
-vv 用very vrebose模式启动,调试信息和错误输出到控制台
-d 作为daemon在后台启动

更多关于memcache的内容以后补充