Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

工作原理:

①客户端第一次访问应用程序时,会到数据库(RDBMS)中取出数据,返回给客户端;同时也将取出的数据保存到memcached中。

② 第二次访问时,因为数据已经缓存,不不用去数据库查询了,直接从memcached取。

那么memcached的快速和高效率是如何体现出来的呢?我们都清楚,RDBMS是文件型的数据库,最终还是以文件的形式保存在磁盘上。而memcached则不一样,它是key:value关系型的数据库,是保存在内存中的。那么就不用我再做说明了,内存的读写速度要比磁盘的读写速度快得多,前者是后者的10的6次方倍。

一、Rhel6.5安装libevent

[root@service2 ~]# tar zxvf libevent-1.4.13-stable.tar.gz


[root@service2 ~]# cd libevent-1.4.13-stable


[root@service2 libevent-1.4.13-stable]# ./configure --prefix=/usr/


[root@service2 libevent-1.4.13-stable]# make


[root@service2 libevent-1.4.13-stable]# make install

测试libevent是否安装成功:

[root@service2 libevent-1.4.13-stable]# ls -al /usr/lib | grep libevent

lrwxrwxrwx   1 root root        21 7月  13 10:37 libevent-1.4.so.2 -> libevent-1.4.so.2.1.3

-rwxr-xr-x   1 root root    373214 7月  13 10:37 libevent-1.4.so.2.1.3

-rw-r--r--   1 root root    603890 7月  13 10:37 libevent.a

lrwxrwxrwx   1 root root        26 7月  13 10:37 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3

-rwxr-xr-x   1 root root    137329 7月  13 10:37 libevent_core-1.4.so.2.1.3

-rw-r--r--   1 root root    228968 7月  13 10:37 libevent_core.a

-rwxr-xr-x   1 root root       860 7月  13 10:37 libevent_core.la

lrwxrwxrwx   1 root root        26 7月  13 10:37 libevent_core.so -> libevent_core-1.4.so.2.1.3

lrwxrwxrwx   1 root root        27 7月  13 10:37 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3

-rwxr-xr-x   1 root root    295868 7月  13 10:37 libevent_extra-1.4.so.2.1.3

-rw-r--r--   1 root root    469074 7月  13 10:37 libevent_extra.a

-rwxr-xr-x   1 root root       867 7月  13 10:37 libevent_extra.la

lrwxrwxrwx   1 root root        27 7月  13 10:37 libevent_extra.so -> libevent_extra-1.4.so.2.1.3

-rwxr-xr-x   1 root root       825 7月  13 10:37 libevent.la

lrwxrwxrwx   1 root root        21 7月  13 10:37 libevent.so -> libevent-1.4.so.2.1.3

[root@service2 libevent-1.4.13-stable]#

二、安装memcached数据库

[root@service1 memcached-1.5.7]# tar -zxvf memcached-1.5.7.tar.gz       解压源码


[root@service1 memcached-1.5.7]# cd memcached-1.5.7                       进入目录


[root@service1 memcached-1.5.7]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr   配置


[root@service1 memcached-1.5.7]# make


[root@service1 memcached-1.5.7]# make install

三、启动、关闭

(1)/usr/local/memcached/bin/memcached -d -m 512 -l 127.0.0.1 -p 11211 -u root -c 1024 -P /usr/local/memcached/memcached.pid

-d选项是作为守护进程在后台运行

 -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,

 -u是运行Memcache的用户,我这里是root,

 -l是监听的服务器IP地址,如果有多个地址的话

 -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口

 -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,

-P是设置保存Memcache的pid文件

-vv是以very vrebose模式启动,将调试信息和错误输出到控制台

(2)service memcached start


[root@service2 ~]# ps -ef | grep memcached.pid

root      12835      1  0 16:28 ?        00:00:00 /usr/local/memcached/bin/memcached -d -m 512 -l 127.0.0.1 -p 11211 -u root -c 1024 -P /usr/local/memcached/memcached.pid

496       12872      1  0 16:28 ?        00:00:00 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

root      12888   3185  0 16:28 pts/0    00:00:00 grep memcached.pid


从ps -ef | grep memcached.pid可以看到,启动了不同的两个进程;;建议以第一种方式启动;以第一种方式启动:

[root@service2 ~]# service memcached status

memcached 已停

注意到服务是停止的。



查看端口占用情况:lsof -i:11211


查看帮助命令:[root@service1 ~]#  memcached -h -u root


连接memcached:

[root@service1 ~]# telnet 127.0.0.1 11211

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

Escape character is '^]'.

stats

STAT pid 102779

STAT uptime 430