MemcacheDB為結合 Memcached 及 Berkeley-DB 的實作產品,儲存方式是一種 key-value 的結構方式,因為主要運作都是放在 memory 裡,所以執行效能非常的快。
要使用MemcacheDB需安裝Berkeley-DB、libevent及Memcached。下面就來看看如何安裝及測試MemcachedDB
安裝 Berkeley db
到 google 搜尋「berkeley db download」,到 oracle 官網下載,目前最新版本為 4.8.24,安裝步驟為:
tar xvzf db-4.8.24.tar.gz
cd db-4.8.24/
cd build_unix/
../dist/configure
make
sudo make install
安裝 libevent
cd db-4.8.24/
cd build_unix/
../dist/configure
make
sudo make install
到google 搜尋「libevent download」,到 monkey.org 下載,目前stable為1.4.12,安裝步驟為:
tar xvzf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable.tar.gz
./configure
make
sudo make install
安裝 MemcacheDB
cd libevent-1.4.12-stable.tar.gz
./configure
make
sudo make install
到官網:http://memcachedb.org/下載,安裝步驟為:
tar xvzf memcachedb-1.2.0.tar.gz
cd memcachedb-1.2.0
./configure --enable-threads
make
sudo make install
ps: memcachedb 1.2預設捉的berkeley db為4.7版,如果安裝的是4.8或更新版本則需修改二個檔案:
cd memcachedb-1.2.0
./configure --enable-threads
make
sudo make install
memcachedb-1.2.0/configure.ac
memcachedb-1.2.0/configure
將 bdbdir="/usr/local/BerkeleyDB.4.7" 改成您的Berkeley DB的位置
(如為 4.8.x 版,則改成 bdbdir="/usr/local/BerkeleyDB.4.8" )
三個軟件安裝完成後,在 /etc/ld.so.conf 裡新增「/usr/local/BerkeleyDB.4.8/lib」的內容,
或用指令的方式新增內容 $echo "/usr/local/BerkeleyDB.4.8/lib/" >> /etc/ld.so.conf
亦可直接用 vi /etc/ld.so.conf 來編輯
一般執行 memcachedb 的方式 sample:
<SAMPLE-1>,讀寫合併模式 (-H 參數設定 BerkeleyDB 實檔存放位置 )
memcachedb -p21211 -d -r -u root -H /server/mdb_11211 -N
<SAMPLE-2>,讀寫分離/備份模式
#主伺服器 192.168.0.1 讀寫模式,監聽port 11211 ,同步透過31211 port完成
memcachedb -p21211 -d -r -u root -H /data/mdb_11211_m -N -R 127.0.0.1:31211 -M
#輔伺服器 192.168.0.2,唯讀模式,監聽port 21212,從192.168.0.1 的 31211 port同步資料,同時再開一個31212埠對外提供資料同步服務
memcachedb -p21212 -d -r -u root -H /data/mdb_11211_from_16801_s -O 192.168.0.1:31211 -R 192.168.0.2:31212 -S
需要更多的 memcachedb 執行參數說明,可以直接下「memcachedb -h」來查看
安裝過程的原文說明,可以查看 memcachedb 解開後裡的 INSTALL 檔案
以下為使用php接 memcachedb的sample:
到 google 搜尋並下載「memcached-client.php」。打開下載回來的memcached-client.php,打開來看,裡面即有一段現成的sample 可以參考。
require_once 'memcached-client.php';
$mc = new memcached(array(
'servers' => array('127.0.0.1:10000',
array('192.0.0.1:10010', 2),
'127.0.0.1:10020'),
'debug' => false,
'compress_threshold' => 10240,
'persistant' => true));
$mc->add('key', array('some', 'array'));
$mc->replace('key', 'some random string');
$val = $mc->get('key');
PS:參考資料來源:
http://www.devnotes.net/post/182.html
http://blog.gslin.org/archives/2008/02/17/1431/
http://willko.javaeye.com/blog/394759

Leave a comment