您的位置:首页 > 数据库 > Memcache

CentOS下Memcached安装和使用详解

2015-08-04 21:10 633 查看

系列文章导航:

memcached全面剖析–2. 理解memcached的内存存储

memcached全面剖析–3. memcached的删除机制和发展方向

memcached全面剖析–4. memcached的分布式算法

memcached全面剖析–5. memcached的应用和兼容程序\

memcached是什么?

memcached是以LiveJournal旗下Danga Interactive公司的Brad
Fitzpatric为首开发的一款软件。现在已成为mixihatenaFacebookVox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。

这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。



图1 一般情况下memcached的用途

memcached的特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

协议简单
基于libevent的事件处理
内置内存存储方式
memcached不互相通信的分布式

协议简单

memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。下面是例子。

$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3     (保存命令)
bar               (数据)
STORED            (结果)
get foo           (取得命令)
VALUE foo 0 3     (数据)
bar               (数据)

协议文档位于memcached的源代码内,也可以参考以下的URL。

http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt

基于libevent的事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

libevent的下载地址:http://libevent.org

libevent的安装

tar -zxvf libevent-2.0.21-stable.tar.gz
cd
libevent-2.0.21-stable

./configure --prefix=/usr/local
make uninstall
make clean
make
make install
cd ..


内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。

memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本连载也将介绍memcached的分布式。



图2 memcached的分布式

接下来简单介绍一下memcached的使用方法。

安装memcached

memcached的安装比较简单,这里稍加说明。

memcached支持许多平台。

Linux
FreeBSD
Solaris (memcached 1.2.5以上版本)
Mac OS X

另外也能安装在Windows上。这里使用CentOS进行说明。

memcached的安装。

下载memcachedhttp://www.danga.com/memcached/download.bml

memcached安装与一般应用程序相同,configure、make、make install就行了。

$ tar zxf memcached-1.4.15.tar.gz
$ cd memcached-1.4.15
$ ./configure
$ make
$ sudo make install

默认情况下memcached安装到/usr/local/bin下。

memcached的启动

从终端输入以下命令,启动memcached。

关于memcache启动的一些参数说明:

memcached命令参数解释:

-p <num> 监听的端口

-l <ip_addr> 连接的IP地址, 默认是本机

-d start 启动memcached 服务

-d restart 重起memcached 服务

-d stop|shutdown 关闭正在运行的memcached 服务

-d install 安装memcached 服务

-d uninstall 卸载memcached 服务

-u <username> 以<username>的身份运行 (仅在以root运行的时候有效)

-m <num> 最大内存使用,单位MB。默认64MB

-M 内存耗尽时返回错误,而不是删除项

-c <num> 最大同时连接数,默认是1024

-f <factor> 块大小增长因子,默认是1.25

-n <bytes> 最小分配空间,key+value+flags默认是48

-h 显示帮助

然后执行命令启动memcached

#/usr/local/bin/memcached -d -m 1024 -u root -p 11211 -P /tmp/memcached.pid

然后就可以使用telnet,来测试memcache的连接状态,

如果没有安装telnet服务,可以执行

yum install telnet-server

安装服务

yum install telnet

安装命令

然后编辑vi /etc/xinetd.d/telnet 文件,激活telnet,默认是禁用的,截图如下:

然后重启服务,执行命令 service xinetd restart

然后就可以测试memcached的连接,执行命令

telnet 127.0.0.1 11211

输入stats,会输出memcache的一些连接信息,包括PID

如果需要退出,则执行quit命令即可,截图如下:



以下为个状态参数的详解:

pid //Memcached进程ID

uptime //Memcached运行时间,单位:秒

time //Memcached当前的UNIX时间

version //Memcached的版本号

pointer_size //当前服务内存分配大小

curr_connections //当前连接数量

total_connections //Memcached运行以来接受的连接总数

connection_structures //Memcached分配的连接结构的数量

cmd_get //查询请求总数

cmd_set //存储(添加/更新)请求总数

rusage_user //该进程累计的用户时间,单位:秒

rusage_system //该进程累计的系统时间,单位:秒

curr_items //Memcached当前存储的内容数量

total_items //Memcached启动以来存储过的内容总数

bytes //Memcached当前存储内容所占用的字节数

get_hits //查询成功获取数据的总次数

get_misses //查询成功未获取到数据的总次数

bytes_read //Memcached从网络读取到的总字节数

bytes_written //Memcached向网络发送的总字节数

limit_maxbytes //Memcached在存储时被允许使用的字节总数

退出telnet,执行quit命令即可,上图所示的memcached进程ID,很重要,如果我们需要关闭memcached服务时,就可以执行命令,kill -9 进程号 即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: