CentOS 6.x 安装 Memcached

一、Memcached 介绍


Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages.

以上内容来自 Memcached 官网: http://memcached.org/

大致意思是:Memcached 是一个免费开源的基于内存的分布式缓存系统,使用它来作为我们的 Web 应用的缓存(包括字符串,对象,页面等等)以减少 Web 应用对数据库的负载。Memcached 的存储数据格式是键值对的方式进行存储在内存中。

Memcached 官网:

http://memcached.org/

GitHub 源码地址:

https://github.com/memcached/memcached

Wiki 文档地址:

https://github.com/memcached/memcached

二、安装环境


  • CentOS 6.7 x64 Linux
  • libevent
  • memcached

注:

  • 由于 Memcached 是基于 libevent (an event notification library) 事件驱动库,因此需要依赖 libevent 库。Libevent 官方如下:
http://libevent.org/
  • 本文下方的安装过程中均使用 root 用户操作
  • 本文部分内容参考是官方的安装文档,官方安装文档地址如下
https://github.com/memcached/memcached/wiki/Install

三、yum 安装 Memcached


3.1 安装

root 用户 使用 yum 包管理工具安装

[root@localhost ~]# yum install memcached
...

Dependencies Resolved
===================================================================
 Package         Arch         Version             Repository  Size
===================================================================
Installing:
 memcached       x86_64       1.4.4-5.el6         base        69 k
Installing for dependencies:
 libevent        x86_64       1.4.13-4.el6        base        66 k

Transaction Summary
===================================================================
Install       2 Package(s)

Total download size: 134 k
Installed size: 374 k
Is this ok [y/N]: y
...

从上面信息可以看到,在低版本的系统 yum 仓库中维护的包版本会比较低。如果想要安装最新的软件包,可能需要更新 yum 的源。

3.2 启动

[root@localhost ~]# service memcached start
Starting memcached:                                        [  OK  ]

3.3 验证

[root@localhost ~]# ps -ef | grep memcached
496       44981      1  0 17:35 ?        00:00:00 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

从运行的进程可以看到,memcached 已经正常运行了。其中,启动参数介绍如下:
-d 选项是启动一个守护进程
-m 是分配给 Memcached 使用的内存数量,单位是 MB,默认是 64MB
-u 是运行 Memcached 的用户,默认是 memcached
-l 是监听的服务器 IP 地址,如果有多个地址的话
-p 是设置 Memcached 监听的端口,默认是 11211
-c 选项是最大运行的并发连接数,默认是 1024,按照服务器的负载量来设定
-P 是设置保存 Memcached 的 pid 文件,默认保存在 /var/run/memcached/memcached.pid

3.4 配置参数

查看配置文件
执行如下命令查看 memcached 的配置文件:

[root@localhost ~]# rpm -qc memcached 
/etc/sysconfig/memcached

查看默认参数
使用 yum 安装的 memcached 的默认配置参数如下:

[root@localhost ~]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

配置自定义参数
可以编辑 /etc/sysconfig/memcached 文件来配置自定义的 memcached 运行参数,保存退出,如下示例:

[root@localhost ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="root"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS=""

重启 memcached

[root@localhost ~]# service memcached restart
Stopping memcached:                                        [  OK  ]
Starting memcached:                                        [  OK  ]

验证

[root@localhost ~]# ps -ef | grep memcached | grep -v grep
root      45088      1  0 18:07 ?        00:00:00 memcached -d -p 11211 -u root -m 128 -c 1024 -P /var/run/memcached/memcached.pid

可以看到配置的自定义参数已经生效。

3.5 配置开机自启动

查看 chkconfig 状态

[root@localhost ~]# chkconfig | grep memcached
memcached       0:off   1:off   2:off   3:off   4:off   5:off   6:off

配置 chkconfig
执行如下命令,配置 memcached 的开机自启

[root@localhost ~]# chkconfig memcached on

验证 chkconfig 配置

[root@localhost ~]# chkconfig | grep memcached
memcached       0:off   1:off   2:on    3:on    4:on    5:on    6:off

注:

  • memcached 开机自启的配置文件位于 /etc/rc.d/init.d/memcached,可以编辑此文件中的配置参数来自定义。

3.6 其他操作

当我们使用 yum 命令安装了一个软件包时,感觉好像我们一下子不知道该怎么操作了,软件包安装到哪儿了,怎么启动,怎么配置?

这些问题我们可以通过在 yum 安装完成后执行如下命令查看安装的软件包资源位置。

如下示例:

[root@localhost ~]# rpm -ql memcached
/etc/rc.d/init.d/memcached
/etc/sysconfig/memcached
/usr/bin/memcached
/usr/bin/memcached-tool
/usr/share/doc/memcached-1.4.4
/usr/share/doc/memcached-1.4.4/AUTHORS
/usr/share/doc/memcached-1.4.4/CONTRIBUTORS
/usr/share/doc/memcached-1.4.4/COPYING
/usr/share/doc/memcached-1.4.4/ChangeLog
/usr/share/doc/memcached-1.4.4/NEWS
/usr/share/doc/memcached-1.4.4/README
/usr/share/doc/memcached-1.4.4/protocol.txt
/usr/share/doc/memcached-1.4.4/readme.txt
/usr/share/doc/memcached-1.4.4/threads.txt
/usr/share/man/man1/memcached.1.gz
/var/run/memcached

rpm -ql 命令会列举出已安装的软件包的相关资源,此命令不仅适用于使用 yum 安装的 memcached 软件包,也适用于其他 yum 安装的软件包。

四、源码安装 Memcached


4.1 安装 libevent-devel

如前方提到的 Memcached 依赖于 libevent,因此需要 libevent。root 用户执行如下命令查看是否已经安装了 libevent-devel

[root@localhost memcached-1.5.9]# rpm -qa libevent-devel

如果已经安装 libevent-devel

执行如下命令查看 libevent-devel 的安装目录,并记录下来以供后面安装 memcached 使用。

[root@localhost memcached-1.5.9]# rpm -ql libevent-devel 
/usr/bin/event_rpcgen.py
/usr/lib64/libevent.a
/usr/lib64/libevent.so
/usr/lib64/libevent_core.a
/usr/lib64/libevent_core.so
/usr/lib64/libevent_extra.a
/usr/lib64/libevent_extra.so
/usr/share/man/man3/evdns.3.gz
/usr/share/man/man3/event.3.gz

此处可以看到, libevent-devel 被安装到 /usr/lib64/ 目录下了(以 libevent 动态链接来确定)

如果没有安装 libevent-devel
执行如下命令安装 libevent-devel

[root@localhost memcached-1.5.9]# yum install libevent-devel

同上获取 libevent-devel 的安装位置,yum 安装的 libevent-devel 可以不用指定 libevent-devel 安装位置,不过此处建议都手动方式获取 libevent-devel 的安装位置并在正文安装时指定,以免被绕晕...

4.2 下载 Memcached

如下使用 wget 进行下载,当然也可以使用其他方式下载,此处不表。

[root@localhost memcached]# wget http://memcached.org/files/memcached-1.5.9.tar.gz

注:

  • 上面的链接中 1.5.9 表示 memcached 的版本,这是当前的最新版本,如果需要安装其它版本,可以参考官方发版记录中的信息 https://github.com/memcached/memcached/wiki/ReleaseNotes
  • 如果只想安装最新的版本,可以将上面的下载 URL 改为 wget https://memcached.org/latest,如下所示:
[root@localhost memcached]# wget http://memcached.org/lastest
[root@localhost memcached]# tar -zxvf lastest

4.3 解压

解压方式也很简单,前面下载的是 .tar.gz 格式的包,因此使用 tar 来解压。如果下载的是 .zip 文件,则使用 unzip 来解压,此处不多列举。

[root@localhost memcached]# pwd
/data/software/memcached
[root@localhost memcached]# tar zxvf memcached-1.5.9.tar.gz

4.4 编译

进入解压后的文件目录,并指定 libevent-devel 的安装位置来编译 memcached 并指定 memcached 的安装目录。

[root@localhost memcached]# cd memcached-1.5.9
[root@localhost memcached-1.5.9]# ./configure --with-libevent=/usr/lib64/ --prefix=/usr/local/memcached

注:

  • --with-libevent=/usr/lib64/ 表示的是指定 libevent 的安装目录,以上文中使用 rpm -ql 查看获取的 libevent-devel 为准
  • --prefix=/usr/local/memcached 表示指定 memcached 的安装目录
  • 此命令执行后,并未安装 memcached 到 /usr/local/memcached/ 目录

4.5 安装

编译成功后,直接执行如下命令即可安装。

[root@localhost memcached-1.5.9]# pwd
/data/software/memcached/memcached-1.5.9
[root@localhost memcached-1.5.9]# make && make install

4.6 Memcached 的启动

启动方式也非常简单,如下示例:

[root@localhost memcached-1.5.9]# /usr/local/memcached/bin/memcached -d -m 128 -p 11211 -u root 

启动参数前方有介绍,此处不再赘述。

4.7 验证 memcached

执行如下命令查看 memcached 的进程情况

[root@localhost memcached-1.5.9]# ps -ef | grep memcached | grep -v grep
root      49417      1  0 18:55 ?        00:00:00 /usr/local/memcached/bin/memcached -d -m 128 -p 11211 -u root

五、Memcached 简单使用


由于 Memcached 是基于文本行协议,因此我们可以方便地使用 Memcached,比如通过 telnet 我们就能实现对 Memcached 中的数据的读写。

[root@localhost memcached-1.5.9]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.

set foo 0 0 11 
hello world
STORED
get foo
VALUE foo 0 11
hello world
END

注:

  • set foo 0 0 11 命令的简单解释
    set:设置键值的关键字,向 memcached 写入数据时的关键字。
    foo:向 memcached 写入数据 key,前面提到过 memcached 是基于键值(key-value)的存储数据格式。
    0:第一个 0 是 flags 值,32 位无符号整数,用于数据检索,由用户提供,并会在 memcached 中存储
    0:第二个 0 是 exptime 的值,过期时间,以秒表示。0 表示不过期,如果 exptime 大于 30 天,Memcached 将使用它作为 UNIX 时间戳过期。
    11:11 是指定要写入 memcached 数据块中的数据值的大小( bytes )。比如,hello world 每一个字母占一个字节(含空格),就是 11 字节。
    noreply: (可选参数) 告知服务器不发送回复。

  • set foo 0 0 11 执行成功后,会新起一行接受输入数据值,输入后按 "Enter" 键,如果 返回 STORED 表示成功,返回 ERROR 表示写入失败

  • get foo 命令比较简单,表示获取数据, get 为关键字,foo 是键(key),不再细述。

六、总结


此文介绍了 CentOS 6.x 下 Memcached 的两种安装方式:一种是 yum 安装,另一种是源码编译安装。总体来说都非常简单。

如果你不需要追求最新版本,那么推荐使用 yum 安装,因为整体安装方便且简单。而如果你对版本有要求而且又需要实现更多的自定义功能,那么建议使用源码编译安装。

另外,此文只是介绍了 Memcached 的安装及简单使用(本地),包括防火墙配置,远程客户端连接及使用,项目中的实际使用场景等等将在后续的文章中进行介绍。

附录: Memcached 启动脚本


[root@localhost memcached]# vi startup.sh

脚本内容如下:

#! /bin/sh  
echo "Start to start memcached server $(date)..."  
  
MEMCACHED=/usr/local/memcached/bin/memcached  
  
usage()  
{  
     echo "usage: `basename $0` port"  
}  
 
if [ -n "$1" ]  
then  
{  
     pid=`ps aux|grep memcached|grep "$1" |grep -v grep|awk '{print $2}'`  
     if [ -n "$pid" ]  
     then  
     {  
          sleep 2  
          echo "kill memcached which port is $1 begin"  
          echo "pid:$pid"  
          kill -9 $pid  
          echo "kill memcached which port is $1 end"  
          sleep 2  
     }  
     fi  
     echo "begin to start memcached in port $1"  
     LOG_FILE=/var/log/memcached/memcached_$1.log  
     rm -f $LOG_FILE  
     $MEMCACHED -d -p $1 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid >> $LOG_FILE 2>&1
     echo "start memcached end"  
     tail -f $LOG_FILE  
}  
else  
{  
     usage  
     exit 1  
}  
fi

赋权限

[root@localhost memcached]# chmod 755 startup.sh

执行:

[root@localhost memcached]# ./startup.sh 11211

其中 11211 是指定的 Memcached 的运行端口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,513评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,312评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,124评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,529评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,937评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,913评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,084评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,816评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,593评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,788评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,267评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,601评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,265评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,158评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,953评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,066评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,852评论 2 277

推荐阅读更多精彩内容

  • Memcached 教程 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached...
    大熊_7d48阅读 2,339评论 0 0
  • 一、MemCache简介 session MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存...
    李伟铭MIng阅读 3,657评论 2 13
  • 1、memcache的概念? Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨...
    桖辶殇阅读 2,143评论 2 12
  • 前面章节我会先简要说明一下安装过程, 后面章节我会记录在安装期间踩过的坑.Linux 下编译软件的步骤参见Linu...
    patiencing阅读 3,133评论 1 3
  • 今天看了一部电影《危城》,陈木胜导演作品,除了有帅哥美女养眼以外,更看出了一些别的东西,想聊聊。 故事的大意是讲,...
    L闷儿阅读 487评论 0 0