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