使用php操作memcached

來源:互聯網
上載者:User

memcached 是一個KVStore for Redis系統,它將關鍵資料存放區在記憶體中,大大減少存取資料的時間。使用memcached的好處不言而喻,它不僅減少了系統訪問資料庫的壓力,而且提高系統的反應速度。至於什麼樣的系統需要使用memcache,筆者建議資料量大,訪問頻繁系統可以採取memcached作為緩衝的中介層。

使用memcached的缺點除了增加程式的代碼量,還有就是不能保證資料庫的即時性,另外在第一次初始化資料庫會需要額外的時間。但是這些的缺點比起它的優點是很微不足道。

 

php帶有操作memcached的擴充,它提供一組函數來操作memcached伺服器,將他們簡單分一下類:

1。memcached的串連函數(connect, pconnect)

2。memcahced的操作函數(set, get, delete, replace, flush)

3。多伺服器配置函數(addServer)

4。狀態監控函數(getStats.....)

 

下面摘一段代碼,給大家一個直觀的印象:(假設memcached安裝在172.10.10.10上面,連接埠號碼12121)

$memcache = new Memcached();

$memcahce->connect('172.10.10.10', 12121);

$memcache->set('Key', 'Value');

$memcache->get('Key');

上面的主要完成了memcached的簡單操作流程:串連memcached伺服器,設定值,取值('Key'的值是'Value');

 

這裡需要向大家說明一下addServer函數和connect函數,addServer是將多個伺服器放在串連池,而connect只是將串連某一台伺服器;如果在使用了addServer,再使用connect,這裡就會只使用一台伺服器。

 

介紹了memcached的使用後,下面向大家介紹如何編寫自己的php memcached的用戶端。

memcached是一個伺服器端程式,我們自然可以使用php中的通訊端程式來串連,並進行相應的通訊,完成資料的儲存操作。要使用php和memcached通訊,首先需要知道memcached的通訊協議,相關的資訊可以在memcached的源碼的doc/protocol.txt中找到。

這裡筆者使用get命令向大家展示一下這個過程

這個命令主要是從資料中提取資料,輸入格式: get key\r\n

如果伺服器沒有這個值,則返回: END\r\n

如果這個值存在,返回: VALUE key <標記> <資料長度> \r\n 資料區塊\r\n

以下代碼是簡單類比的用戶端操作

$fp = fsocketopen('172.10.10.10', 12121, $errorno, $errstr, 1);

if(!$fp)

  echo "$errstr";

else

{

  $out = "get key \r\n";

  fwrite($out);

  while(!feof($fp))

    $str  . = fgets($fp);

  

  if(stripos($str, 'END') ===0)

    exit("NO value find")

  $arr = implode('\r\n', $str);

  echo $arr[1];

}

 

簡單解釋上面的代碼,使用fsocketopen開啟伺服器的socket通訊介面,然後向其發送get key命令, 然後擷取返回的資料,並解析返回的資料。這裡都沒有做異常的處理,在編程的時候要填上。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.