一朱巨、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.
以上內(nèi)容來(lái)自 Memcached 官網(wǎng): http://memcached.org/
大致意思是:Memcached 是一個(gè)免費(fèi)開(kāi)源的基于內(nèi)存的分布式緩存系統(tǒng)喉悴,使用它來(lái)作為我們的 Web 應(yīng)用的緩存(包括字符串敲街,對(duì)象咖熟,頁(yè)面等等)以減少 Web 應(yīng)用對(duì)數(shù)據(jù)庫(kù)的負(fù)載缨恒。Memcached 的存儲(chǔ)數(shù)據(jù)格式是鍵值對(duì)的方式進(jìn)行存儲(chǔ)在內(nèi)存中臣嚣。
Memcached 官網(wǎng):
http://memcached.org/
GitHub 源碼地址:
https://github.com/memcached/memcached
Wiki 文檔地址:
https://github.com/memcached/memcached
二颅停、安裝環(huán)境
- CentOS 6.7 x64 Linux
- libevent
- memcached
注:
- 由于 Memcached 是基于 libevent (an event notification library) 事件驅(qū)動(dòng)庫(kù),因此需要依賴 libevent 庫(kù)具温。Libevent 官方如下:
http://libevent.org/
- 本文下方的安裝過(guò)程中均使用 root 用戶操作
- 本文部分內(nèi)容參考是官方的安裝文檔蚕涤,官方安裝文檔地址如下
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
...
從上面信息可以看到铣猩,在低版本的系統(tǒng) yum 倉(cāng)庫(kù)中維護(hù)的包版本會(huì)比較低揖铜。如果想要安裝最新的軟件包,可能需要更新 yum 的源达皿。
3.2 啟動(dòng)
[root@localhost ~]# service memcached start
Starting memcached: [ OK ]
3.3 驗(yàn)證
[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
從運(yùn)行的進(jìn)程可以看到天吓,memcached 已經(jīng)正常運(yùn)行了。其中峦椰,啟動(dòng)參數(shù)介紹如下:
-d 選項(xiàng)是啟動(dòng)一個(gè)守護(hù)進(jìn)程
-m 是分配給 Memcached 使用的內(nèi)存數(shù)量龄寞,單位是 MB,默認(rèn)是 64MB
-u 是運(yùn)行 Memcached 的用戶汤功,默認(rèn)是 memcached
-l 是監(jiān)聽(tīng)的服務(wù)器 IP 地址物邑,如果有多個(gè)地址的話
-p 是設(shè)置 Memcached 監(jiān)聽(tīng)的端口,默認(rèn)是 11211
-c 選項(xiàng)是最大運(yùn)行的并發(fā)連接數(shù)滔金,默認(rèn)是 1024色解,按照服務(wù)器的負(fù)載量來(lái)設(shè)定
-P 是設(shè)置保存 Memcached 的 pid 文件,默認(rèn)保存在 /var/run/memcached/memcached.pid
3.4 配置參數(shù)
查看配置文件
執(zhí)行如下命令查看 memcached 的配置文件:
[root@localhost ~]# rpm -qc memcached
/etc/sysconfig/memcached
查看默認(rèn)參數(shù)
使用 yum 安裝的 memcached 的默認(rèn)配置參數(shù)如下:
[root@localhost ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
配置自定義參數(shù)
可以編輯 /etc/sysconfig/memcached
文件來(lái)配置自定義的 memcached 運(yùn)行參數(shù)鹦蠕,保存退出冒签,如下示例:
[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 ]
驗(yàn)證
[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
可以看到配置的自定義參數(shù)已經(jīng)生效。
3.5 配置開(kāi)機(jī)自啟動(dòng)
查看 chkconfig 狀態(tài)
[root@localhost ~]# chkconfig | grep memcached
memcached 0:off 1:off 2:off 3:off 4:off 5:off 6:off
配置 chkconfig
執(zhí)行如下命令钟病,配置 memcached 的開(kāi)機(jī)自啟
[root@localhost ~]# chkconfig memcached on
驗(yàn)證 chkconfig 配置
[root@localhost ~]# chkconfig | grep memcached
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
注:
- memcached 開(kāi)機(jī)自啟的配置文件位于
/etc/rc.d/init.d/memcached
萧恕,可以編輯此文件中的配置參數(shù)來(lái)自定義。
3.6 其他操作
當(dāng)我們使用 yum 命令安裝了一個(gè)軟件包時(shí)肠阱,感覺(jué)好像我們一下子不知道該怎么操作了票唆,軟件包安裝到哪兒了,怎么啟動(dòng)屹徘,怎么配置走趋?
這些問(wèn)題我們可以通過(guò)在 yum 安裝完成后執(zhí)行如下命令查看安裝的軟件包資源位置。
如下示例:
[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
命令會(huì)列舉出已安裝的軟件包的相關(guān)資源噪伊,此命令不僅適用于使用 yum 安裝的 memcached 軟件包簿煌,也適用于其他 yum 安裝的軟件包。
四鉴吹、源碼安裝 Memcached
4.1 安裝 libevent-devel
如前方提到的 Memcached 依賴于 libevent姨伟,因此需要 libevent。root 用戶執(zhí)行如下命令查看是否已經(jīng)安裝了 libevent-devel
[root@localhost memcached-1.5.9]# rpm -qa libevent-devel
如果已經(jīng)安裝 libevent-devel
執(zhí)行如下命令查看 libevent-devel 的安裝目錄豆励,并記錄下來(lái)以供后面安裝 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 動(dòng)態(tài)鏈接來(lái)確定)
如果沒(méi)有安裝 libevent-devel
執(zhí)行如下命令安裝 libevent-devel
[root@localhost memcached-1.5.9]# yum install libevent-devel
同上獲取 libevent-devel 的安裝位置,yum 安裝的 libevent-devel 可以不用指定 libevent-devel 安裝位置技扼,不過(guò)此處建議都手動(dòng)方式獲取 libevent-devel 的安裝位置并在正文安裝時(shí)指定伍玖,以免被繞暈...
4.2 下載 Memcached
如下使用 wget 進(jìn)行下載,當(dāng)然也可以使用其他方式下載剿吻,此處不表窍箍。
[root@localhost memcached]# wget http://memcached.org/files/memcached-1.5.9.tar.gz
注:
- 上面的鏈接中 1.5.9 表示 memcached 的版本,這是當(dāng)前的最新版本和橙,如果需要安裝其它版本仔燕,可以參考官方發(fā)版記錄中的信息
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 解壓
解壓方式也很簡(jiǎn)單晰搀,前面下載的是 .tar.gz 格式的包,因此使用 tar 來(lái)解壓办斑。如果下載的是 .zip 文件外恕,則使用 unzip 來(lái)解壓,此處不多列舉乡翅。
[root@localhost memcached]# pwd
/data/software/memcached
[root@localhost memcached]# tar zxvf memcached-1.5.9.tar.gz
4.4 編譯
進(jìn)入解壓后的文件目錄鳞疲,并指定 libevent-devel 的安裝位置來(lái)編譯 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 為準(zhǔn)
- --prefix=/usr/local/memcached 表示指定 memcached 的安裝目錄
- 此命令執(zhí)行后尚洽,并未安裝 memcached 到 /usr/local/memcached/ 目錄
4.5 安裝
編譯成功后,直接執(zhí)行如下命令即可安裝靶累。
[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 的啟動(dòng)
啟動(dòng)方式也非常簡(jiǎn)單腺毫,如下示例:
[root@localhost memcached-1.5.9]# /usr/local/memcached/bin/memcached -d -m 128 -p 11211 -u root
啟動(dòng)參數(shù)前方有介紹,此處不再贅述挣柬。
4.7 驗(yàn)證 memcached
執(zhí)行如下命令查看 memcached 的進(jìn)程情況
[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 簡(jiǎn)單使用
由于 Memcached 是基于文本行協(xié)議,因此我們可以方便地使用 Memcached邪蛔,比如通過(guò) telnet 我們就能實(shí)現(xiàn)對(duì) Memcached 中的數(shù)據(jù)的讀寫急黎。
[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 命令的簡(jiǎn)單解釋
set:設(shè)置鍵值的關(guān)鍵字,向 memcached 寫入數(shù)據(jù)時(shí)的關(guān)鍵字侧到。
foo:向 memcached 寫入數(shù)據(jù) key勃教,前面提到過(guò) memcached 是基于鍵值(key-value)的存儲(chǔ)數(shù)據(jù)格式。
0:第一個(gè) 0 是 flags 值匠抗,32 位無(wú)符號(hào)整數(shù)荣回,用于數(shù)據(jù)檢索,由用戶提供戈咳,并會(huì)在 memcached 中存儲(chǔ)
0:第二個(gè) 0 是 exptime 的值,過(guò)期時(shí)間,以秒表示著蛙。0 表示不過(guò)期删铃,如果 exptime 大于 30 天,Memcached 將使用它作為 UNIX 時(shí)間戳過(guò)期踏堡。
11:11 是指定要寫入 memcached 數(shù)據(jù)塊中的數(shù)據(jù)值的大辛匝洹( bytes )。比如顷蟆,hello world 每一個(gè)字母占一個(gè)字節(jié)(含空格)诫隅,就是 11 字節(jié)。
noreply: (可選參數(shù)) 告知服務(wù)器不發(fā)送回復(fù)帐偎。set foo 0 0 11 執(zhí)行成功后逐纬,會(huì)新起一行接受輸入數(shù)據(jù)值,輸入后按 "Enter" 鍵削樊,如果 返回 STORED 表示成功豁生,返回 ERROR 表示寫入失敗
get foo 命令比較簡(jiǎn)單,表示獲取數(shù)據(jù)漫贞, get 為關(guān)鍵字甸箱,foo 是鍵(key),不再細(xì)述迅脐。
六芍殖、總結(jié)
此文介紹了 CentOS 6.x 下 Memcached 的兩種安裝方式:一種是 yum 安裝谴蔑,另一種是源碼編譯安裝∈骷睿總體來(lái)說(shuō)都非常簡(jiǎn)單。
如果你不需要追求最新版本成榜,那么推薦使用 yum 安裝框舔,因?yàn)檎w安裝方便且簡(jiǎn)單刘绣。而如果你對(duì)版本有要求而且又需要實(shí)現(xiàn)更多的自定義功能,那么建議使用源碼編譯安裝挣输。
另外,此文只是介紹了 Memcached 的安裝及簡(jiǎn)單使用(本地)撩嚼,包括防火墻配置挖帘,遠(yuǎn)程客戶端連接及使用,項(xiàng)目中的實(shí)際使用場(chǎng)景等等將在后續(xù)的文章中進(jìn)行介紹恋技。
附錄: Memcached 啟動(dòng)腳本
[root@localhost memcached]# vi startup.sh
腳本內(nèi)容如下:
#! /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
賦權(quán)限
[root@localhost memcached]# chmod 755 startup.sh
執(zhí)行:
[root@localhost memcached]# ./startup.sh 11211
其中 11211 是指定的 Memcached 的運(yùn)行端口