Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
说简单一点memcached就是维护着一个位于内存中的大map。它利用RAM的随机访问优势(内存的读写速度要比磁盘的读写速度快得多,前者是后者的10的6次方倍),将某个对象通过特定的索引值存储,当需要这个对象的时候通过这个索引值可以立即找出来。索引值在整个内存缓冲系统中是唯一的,也同时对应唯一的一个对象。这样在涉及查询数据的操作时加入这样一种机制即可起到加快访问速度的效果。
闲话少叙,下面介绍memcached在Linux x86_64环境中的编译过程。
工作机器各项参数如下:
CPU:Intel Xeon 5110
内存:DDR2 1G*4
主机型号:ProLiant DL140 G3
操作系统:Red Hat Enterprise Linux Server release 5.4 x86_64版
内核版本:2.6.18
gcc版本:4.1.2
g++版本:4.1.2
1.下载memcached源码包
访问memcached官方网站可以下载到最新最稳定版本的memcached源码包
下载完成后将其解压
[root@ ~]# cd Download [root@ Download]# ll total 312 -rw-r--r-- 1 root root 311926 Nov 20 16:51 memcached-1.4.10.tar.gz [root@ Download]# tar -xf memcached-1.4.10.tar.gz [root@ Download]# ll total 316 drwxr-xr-x 6 1000 1000 4096 Nov 10 08:32 memcached-1.4.10 -rw-r--r-- 1 root root 311926 Nov 20 16:51 memcached-1.4.10.tar.gz
2.尝试配置memcached编译
进入memcached解压后的目录后,执行./configure命令来检测当前系统环境并生成makefile
[root@ Download]# cd memcached-1.4.10 [root@ memcached-1.4.10]# ./configure
如果在执行之后发现最后一行有如下提示表明缺少libevent库:
checking for libevent directory... configure: error: libevent is required. You can get it from ~provos/libevent/ If it's already installed, specify its path using --with-libevent=/dir/ [root@ memcached-1.4.10]#
这是在编译memcached过程中经常遇到的问题(memcached基于libevent的事件处理机制。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使服务器的连接数增加,也能发挥时间复杂度O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。)。这时就要安装libevent库了。在libevent官方网站中可以下载到最新最稳定版源代码:
同样需要解压并进入解压后的源码包目录:
[root@ Download]# ll total 1140 -rw-r--r-- 1 root root 837650 Nov 20 17:16 libevent-2.0.16-stable.tar.gz drwxr-xr-x 6 1000 1000 4096 Nov 20 17:03 memcached-1.4.10 -rw-r--r-- 1 root root 311926 Nov 20 16:51 memcached-1.4.10.tar.gz [root@ Download]# tar -xf libevent-2.0.16-stable.tar.gz [root@ Download]# cd libevent-2.0.16-stable