使用php操作memcached


memcached 是一個鍵值存儲系統,它將關鍵數據存儲在內存中,大大減少存取數據的時間。使用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命令, 然后獲取返回的數據,並解析返回的數據。這里都沒有做異常的處理,在編程的時候要填上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM