Ubuntu环境下Memcached的应用
1、概述
Memcached 是一套高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
Memcached的API使用循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当数据表格满了以后,接下来新增的数据会以LRU机制替换掉。由于Memcached通常只是当作快取系统使用,所以使用Memcached的应用程式在写回响应较慢的系统时(如后台的数据库)就需要额外的程序来更新Memcached内的资料。
2、特征
Memcached作为高速运行的分布式缓存服务器,具有以下的特点。
协议简单、事件处理、内存存储方式、通信分布式。
2、1 协议简单
memcached的服务器、客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。
2、2 事件处理
Memcached事件处理基于libevent库, libevent将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥强劲的输出性能。Memcached正因使用这个libevent库,才能在Linux、BSD、Solaris等操作系统上发挥其高性能。
2、3 内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,当内容容量达到指定值之后,就会使用基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性存储问题。
2、4 通信分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。分布式功能需要在客户端实现。
3、安装流程
测试环境:Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
3、1 安装依赖组件
通过源码编译安装,编译前,确认gcc,make,patch等编译工具是否已安装;
安装gcc/g++
sudo apt-get install build-essential
3、2 安装流程
运行memcached需要用到libevent,因此优先安装libevent。
3、2、1 安装libevent
下载libevent源码:
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
进入libevent包的下载路径(/home),解压缩文件到当前文件目录下:
tar xzvf libevent-2.0.21-stable.tar.gz
进入解压出的文件目录:
cd libevent-2.0.21-stable
执行文件目录中的configure:
./configure
执行make安装
make
sudo make install
3、2、2 安装Memcached
下载memcached源码包:
(查找最新安装包:http://memcached.org/latest)
wget http://www.memcached.org/files/memcached-1.4.21.tar.gz
解压缩:
tar -zxvf memcached-1.4.21
进入解压缩文件夹:
cd memcached-1.4.21
编译安装:
./configure
make
sudo make install
memcached默认安装到 /usr/local/bin目录下
4、测试
使用telnet测试:
启动memcached:
memcached -d -p 12345 -u nobody -c 1024 -m 64
telnet连接到memcached:
telnet localhost 12345
保存数据:
set test 0 30 14
memcached test
读取数据:
get test
Memcached相关命令:(需要使用telnet:连接到memcached之后才可以使用命令)
“stats”,使用它可以获得各种各样的信息, 包括资源利用率在内的各种信息;
“stats slabs”或“stats items”还可以获得关于缓存记录的信息;
“quit”,结束程序输入。
5、答疑
问:为何我正确配置了Memcached,端口是11111,测试却连接不上?
答:Memcached的监听端口需要Memcached的默认端口11211,由于11111小于11211,所以连接不上,更改端口即可!
问:flush_all [options] ,options可选参数的数字代表什么?
答:options是用数字表示,以秒为单位,是延迟多长时间执行flush_all的意思,如【flush_all 5】,就是五秒后执行flush_all命令。