helloworld

目前日期文章:200803 (2)

瀏覽方式: 標題列表 簡短摘要
memcache 配合資料庫的實作

<?php
$memcache = new Memcache;
$memcache->connect('memcached_server', 11211) or die ("Could not connect");
$name = $memcache->get('$A1234567890');
if (!$result){ //如果memcache中沒有該筆資料的話從資料庫中select出來,並寫一份cache到memcache中
        echo "從資料庫裡面抓出來的資料";
        $link = mysql_connect ("mysql_server","user","password");
        $sql = "select name from DB.TABLE where cid='A1234567890'";
        $result = mysql_query ($sql,$link);
        $row = mysql_fetch_array($result);
        echo $row['name'];
        mysql_free_result ($result);
        mysql_close($link);
        $memcache->add('$A1234567890',$row['name'], false, 10); //寫進memcache中,TTL設為10sec
} else {
        echo "從memcached裡面抓出來的資料";
        echo $name;
}
?>

另外咧
insert的sql可以配合$memcache->add
update的sql可以配合$memcache->set
delete的sql可以配合$memcache->delete寫進memcache中
保持database與memcache中的資料一致性

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

memcache顧名思義就是拿一塊記憶體空間來當cahche
透過網路的存取可以讓大家來共用這塊cache
可以大大降低資料庫存取的頻繁,增加系統服務的效率 

安裝步驟
cd /usr/ports/databases/memcached
make install
cd /usr/ports/databases/pecl-memcache
make install

安裝完後/usr/local/etc/php/extensions.ini會多一行
extension=memcache.so
如果重起apache後還是沒有辦法把memcache include進來的話
就只好把extension=memcache.so寫進php.ini裡面了=.=

啟動memcached
首先adduser memcache
memcached -u memcache -d -l xxx.xxx.xxx.xxx -m 2048 -p 11211
-u: 當你用root執行的時候必須加-u指定user來執行
-d: 用daemon的方式來執行memcached
-l: LISTEN哪個IP,如果是多人共用系統,若無完善的防火牆,建議只監聽內部IP確保資訊安全
-m: 可以使用多大的記憶體,該範例為2G
-p: 要監聽哪個port, 11211為預設值

測試範例
<?php
$memcache = new Memcache; //new一個memcache物件
$memcache->connect("xxx.xxx.xxx.xxx", 11211) or die ("Could not connect"); //connect to memcache
$memcache->set("key1", "Hello World"); // 將'Hello World'丟進memcache,並指定key為key1
$get_value = $memcache->get("key1"); // 將key1的值從memcache中get出來
echo $get_value;
print "<br>";
$mem_stats = $memcache->getStats();
print_r($mem_stats);
?>

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()