2012-08-23

Memcached 分散式的快取系統安裝 (CentOS 5.X)

Memcached 分散式的快取系統安裝 (CentOS 5.X )


Memcached是一套分散式的快取系統,應用於寫回較慢的系統(像是後端的資料庫),它需要額外的程式碼更新memcached內的資料。
(有人把它歸類於 NoSQL Database)

Memcached 目前有眾多的用戶,例如

* LiveJournal
* Wikipedia
* Flickr
* Bebo
* Twitter
* Typepad
* Yellowbot
* Youtube
* Digg
* WordPress.com
* Craigslist
* Mixi

官方網站
http://memcached.org/

維基百科資訊
http://zh.wikipedia.org/zh/Memcached

安裝
yum -y install libevent-devel gcc-c++
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./confgiure
make
make install

啟動
 memcached -d -m 1024 -p 11211 -u root

 啟動參數說明
-d 指定用 daemon 方式
-m 指定使用記憶體容量(單位MB)
-p 指定要監聽的 port (不指定則預設 11211)
-u 指定用哪個帳號來執行,例如 nobody

用 telnet 測試 Memcached (這台電腦 IP 是 192.168.2.151)

[root@localhost ~]# telnet 192.168.2.151 11211

Trying 192.168.2.151...
Connected to 192.168.2.151 (192.168.2.151).
Escape character is '^]'.

set foo 0 0 10 <== 設定 key-value,key 為 foo

testfoo001 <== value 為 testfoo001

STORED

get foo <== 取得 key 為 foo 的值

VALUE foo 0 10

testfoo001

END

^] <== 按下 Ctrl-] 離開

telnet> close <== 書ㄖ物 close 離開 telnet

Connection closed.


寫個 test.php 測試 Memcached + PHP
<?php
$memcache = new Memcache; //創建一個memcache對像
$memcache->connect('localhost', 11211) or die ("Could not connect");
$memcache->set('key', 'test');
$get_value = $memcache->get('key');
echo $get_value;
?>

測試成功
php test.php
test <== 出現 test 表示成功


※ 下面訊息表示 Memcache 沒有啟動
PHP Notice: Memcache::connect(): Server localhost (tcp 11211) failed with: Connection refused (111) in /root/test.php on line 3
PHP Warning: Memcache::connect(): Can't connect to localhost:11211, Connection refused (111) in /root/test.php on line 3
Could not connect

 ※這裡有個不錯的監測工具,安裝一下
 wget http://livebookmark.net/memcachephp/memcachephp.zip
unzip memcachephp.zip -d /var/www/html
yum -y install httpd
service httpd restart
firefox http://localhost//memcache.php &

 vim /var/www/html/memcache.php 看一下檔案內容

預設帳號 memcache
預設密碼 password

※設定一下監測主機 (可以設定多台)
$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211';

改為
$MEMCACHE_SERVERS[] = '192.168.128.251:11211';


出處