Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。
Memcached一般的使用场景是:通过缓存数据库查询的结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
本质上,memcached是一个基于内存的key-value存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等小块任意数据。
工作流程如下:
2. 注意点
简单key-value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可;存储项由"键、过期时间、可选的标志及数据"四个部分组成。
功能实现一半依赖于客户端,一半基于服务器端:客户端负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期。
Memcached虽然是"分布式"缓存服务器,但服务器端并没有分布式功能,即不在服务器间进行数据同步及共享信息,"分布式"完全取决于客户端的实现。
清理超期数据:默认情况下,Memcached是一个LRU缓存,同时按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长。
二.环境 1. OSServer:CentOS-7-x86_64-1511
IP:10.11.4.190
2. Memcached版本 1)libeventlibevent-2.1.8
官网:
下载:
2)memcachedmemcached-1.4.39
官网:https://memcached.org/
下载:https://memcached.org/files/memcached-1.4.39.tar.gz
三.安装Memcached服务器Memcached服务器端的安装相对简单。
1. 安装libevent#Memcached依赖于libevent API,libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口,即使对服务器的连接数增加,也能发挥O(1)的性能 [root@memcached ~]# cd /usr/local/src/ [root@memcached src]# wget [root@memcached src]# tar -zxvf libevent-2.1.8-stable.tar.gz [root@memcached src]# cd libevent-2.1.8-stable [root@memcached libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent [root@memcached libevent-2.1.8-stable]# make [root@memcached libevent-2.1.8-stable]# make install #测试是否安装成功 [root@memcached libevent-2.1.8-stable]# ll /usr/local/libevent/lib/ | grep libevent
2. 安装memcached
[root@memcached ~]# cd /usr/local/src/
[root@memcached src]# tar -zxvf memcached-1.4.39.tar.gz.tar
[root@memcached src]# cd memcached-1.4.39
#注意编译前,生成Makefile文件时,libevent的路径
[root@memcached memcached-1.4.39]# ./configure --prefix=/usr/local/memcached -with-libevent=/usr/local/libevent
[root@memcached memcached-1.4.39]# make
[root@memcached memcached-1.4.39]# make install
#简单通过软链接的方式设置环境变量 [root@memcached ~]# ln -s /usr/local/memcached/bin/* /usr/local/bin/
4. 设置iptables#tcp11211端口是memcached默认监听端口 [root@memcached ~]# vim /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT [root@memcached ~]# service iptables restart
5. 启动
[root@memcached ~]# /usr/local/memcached/bin/memcached -d -m 256 -u root -l 10.11.4.190 -p 11211 -c 1024 -P /usr/local/memcached/memcached.pid
参数说明:
-d:启动一个守护进程,如果前台运行,配合-vv参数,可查看调试信息(主要是存储的信息);
-m:分配给memcached使用的内存数量,单位是MB;
-u:运行memcached的用户,比如root或者memcached,建议采用非root账号;
-l:服务器监听地址,不设置时默认监听本地所有IP地址;
-p:设置memcached的监听端口,默认为11211;
-c:设置最大并发连接数,默认是1024;
-P:设置保存memcached的pid文件;
-v:输出警告和错误信息;
-vv:打印客户端的请求和返回信息;
-h:打印帮助信息;
-i:打印memcached和libevent的版权信息。
[root@memcached ~]# netstat -tunlp
2)telnet连接