memcached 是一套高效能 分散式的快取系統,memcached 是利用記憶體來儲存快取資料,可以利用memcached 減少資料庫負載增加讀取速度,因為將資料儲存於記憶體中了,下次就會直接從 memcached 輸出,不用再透過資料庫再做一次查詢動作,這個對於網站中需要撈取資料庫資料,但又不需要每次都撈一次相當好用。
準備
安裝
memcached
1 2 3 | ./configure --prefix=/usr/local make make install |
memcache
phpize ./configure make make install |
將memcache.so複製到 extension_dir 裡,並修改php.ini
1 2 3 4 | Installing shared extensions: /usr/lib64/php/modules/ extension_dir = "/usr/lib64/php/modules" vi /etc/php.ini extension=memcache.so |
啟動
1 2 3 4 5 6 7 8 | /usr/local/bin/memcached -d -m 2048 -l 192.168.1.200 -p 11211 -u root -c 512 # -d 表示這是daemon, # -m 表示會使用幾MB的記憶體來存放資料, # -l 表示會listen的IP位址, # -p 則是所listen的port, # -u 啟動的user為誰,由於memcached預設不可以由root來啟動,所以你如果要用root來啟動,就要加。 # -c 同時間可以有多少個connection。 |
Firewall
限制連線來源及目的都是網段內的SERVER,以及只允許目的地的TCP 11211 port。
iptables -t filter -A INPUT -p tcp -m tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 11211 -j ACCEPT #memcached |
簡易範例-PHP
1 2 3 4 5 6 7 8 9 10 11 | $memcache = new Memcache; $memcache->connect('192.168.1.200', '11211') or die ("Could not connect"); $get_value = $memcache->get('key'); if(!empty($get_value)){ echo 'cache<p/>'; echo $get_value; } else{ $memcache->set('key', 'test', MEMCACHE_COMPRESSED, 30); echo $memcache->get('key'); } |
參考資料
- http://code.google.com/p/memcached/
- http://pecl.php.net/package/memcache
- http://php.net/manual/en/book.memcache.php
- http://www.systn.com/data/news/27_tw.html
Pingback: session in memcached | 遨遊飛翔
Pingback: CodeIgniter Memcached | 遨遊飛翔