一、Memcached 是什麼
二、Memcached的特征
協定簡單-->基于文本行的,可以通過telnet在伺服器上存取資料。
基于libevent的事件處理-->基于C開發的程式庫,利用這個庫進行異步事件處理。
内置的記憶體管理方式-->有一套自己的記憶體管理方式,不容易産生記憶體碎片。
互補通信的Memcached之間具有分布特征-->各個Ms之間互不通信,都是獨立存取不共享任何資訊。
三、Memcached的安裝
安裝Memcached前需要先安裝libevent:
wget http://www.monkey.org/~provos/libevent-2.0.22-stable.tar.gz
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local/libevent
make && make install
安裝Memcached
wget http://www.memcached.org/memcached-1.4.25.tar.gz
tar zxvf memcached-1.4.25.tar.gz
cd memcached-1.4.25
./configure --prefix=/usr/local/memcached --with-libevet=/usr/local/libevent
/usr/local/memcached/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256
參數說明
<code>-p <num> 監聽的TCP端口(預設: 11211)</code>
<code>-U <num> 監聽的UDP端口(預設: 11211, 0表示不監聽)</code>
<code>-s <</code><code>file</code><code>> 用于監聽的UNIX套接字路徑(禁用網絡支援)</code>
<code>-a <mask> UNIX套接字通路掩碼,八進制數字(預設:0700)</code>
<code>-l <ip_addr> 監聽的IP位址。(預設:INADDR_ANY,所有位址)</code>
<code>-d 作為守護程序來運作。</code>
<code>-r 最大核心檔案限制。</code>
<code>-u <username> 設定程序所屬使用者。(隻有root使用者可以使用這個參數)</code>
<code>-m <num> 所有slab class可用記憶體的上限,以MB為機關。(預設:64MB)</code>
<code> </code><code>(譯者注:也就是配置設定給該memcached執行個體的記憶體大小。)</code>
<code>-M 記憶體用光時報錯。(不會删除資料)</code>
<code>-c <num> 最大并發連接配接數。(預設:1024)</code>
<code>-k 鎖定所有記憶體頁。注意你可以鎖定的記憶體上限。</code>
<code> </code><code>試圖配置設定更多記憶體會失敗的,是以留意啟動守護程序時所用的使用者可配置設定的記憶體上限。</code>
<code> </code><code>(不是前面的 -u <username> 參數;在sh下,使用指令</code><code>"ulimit -S -l NUM_KB"</code><code>來設定。)</code>
<code>-</code><code>v</code> <code>提示資訊(在事件循環中列印錯誤/警告資訊。)</code>
<code>-vv 詳細資訊(還列印用戶端指令/響應)</code>
<code>-vvv 超詳細資訊(還列印内部狀态的變化)</code>
<code>-h 列印這個幫助資訊并退出。</code>
<code>-i 列印memcached和libevent的許可。</code>
<code>-P <</code><code>file</code><code>> 儲存程序ID到指定檔案,隻有在使用 -d 選項的時候才有意義。</code>
<code>-f <factor> 不同slab class裡面的chunk大小的增長倍率。(預設:1.25)</code>
<code> </code><code>(譯者注:每個slab class裡面有相同數量個slab page,每個slab page裡面有chunk,且在目前slab class内的chunk大小固定。</code>
<code> </code><code>而不同slab class裡的chunk大小不一緻,具體差異就是根據這個參數的倍率在增長,直到配置設定的記憶體用盡。)</code>
<code>-n <bytes> chunk的最小空間(預設:48)</code>
<code> </code><code>(譯者注:chunk資料結構本身需要消耗48個位元組,是以一個chunk實際消耗的記憶體是n+48。)</code>
<code>-L 嘗試使用大記憶體頁(如果可用的話)。提高記憶體頁尺寸可以減少</code><code>"頁表緩沖(TLB)"</code><code>丢失次數,提高運作效率。</code>
<code> </code><code>為了從作業系統獲得大記憶體頁,memcached會把全部資料項配置設定到一個大區塊。</code>
<code>-D <char> 使用 <char> 作為字首和ID的分隔符。</code>
<code> </code><code>這個用于按字首獲得狀态報告。預設是</code><code>":"</code><code>(冒号)。</code>
<code> </code><code>如果指定了這個參數,則狀态收集會自動開啟;如果沒指定,則需要用指令</code><code>"stats detail on"</code><code>來開啟。</code>
<code>-t <num> 使用的線程數(預設:4)</code>
<code>-R 每個連接配接可處理的最大請求數。</code>
<code>-C 禁用CAS。</code>
<code>-b 設定背景日志隊列的長度(預設:1024)</code>
<code>-B 綁定協定 - 可能值:ascii,binary,auto(預設)</code>
<code>-I 重寫每個資料頁尺寸。調整資料項最大尺寸。</code>
安裝完之後測試 輸入stats會顯示所有的初始化參數值
[root@hack ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set test 0 0 10
test_value
STORED
get test
VALUE test 0 10
END
quit
Connection closed by foreign host.
[root@hack ~]#
關閉Memcached
kill `cat /var/run/memcached.pid`
安裝Memcache的PHP擴充
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make && make install
3)安裝完會在目錄下産生檔案
/usr/local/php/lib/php/extensions/no-debug-zts-20121212/
4)修改php.ini檔案
修改extension_dir=//usr/local/php/lib/php/extensions/no-debug-zts-20121212/
extension=memcache.so
5)測試php擴充是否安裝成功
<?php
$mem = new memcache;
$mem->connect('127.0.0.1',11211);
$mem-set('test','Hello world',0,12);
$val = $mem->get('test');
echo $val;
?>
浏覽器輸入192.168.4.12/index.php顯示Hello world
本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1744793