程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Memcached 入門代碼實例

Memcached 入門代碼實例

編輯:關於PHP編程

memcached 入門代碼實例

<?php教程
 
class mycache
{
  private $cache;
  function  __construct()
  {
    $this->cache = new memcache();
    // you can replace localhost by memcached server ip addr and port no.
    $this->cache->connect('localhost', 10987);
  }
 
  function get_data($key)
  {
    $data = $this->cache->get($key);
    if($data != null)
      return $data;
    else
    {
      if($this->cache->getresultcode() == memcached::res_notfound)
      {
        //do the databse query here and fetch data
        $this->cache->set($key,$data_returned_from_database);
      }
      else
      {
        error_log('no data for key '.$key);
      }
    }
  }
}
 
$cache = mycache();
$cache->get_data('foo');
 
?>


memcache 在什麼情況下被使用,什麼情況下不要使用?
你在何時應該使用 memcache,又要在何時避免使用它?現在你已經知道了,memcahced 是被設計為減輕數據庫教程端壓力的。但是你最好能制定一個良好的策略,來想辦法讓 memcached 來盡可能的緩存那些最影響性能的查詢。你可以試著為應用中的所有查詢做一些執行時間日志,可以幫助你來分析哪些內容是要重點被緩存的。

現在假設你正在運營一個電子商務網站。 你可以在 memcached 中緩存產品的簡介、運送信息,或者其它一些需要復雜查詢的數據,等等。當一個產品頁被加載的時候,上面提到的數據將會跳過數據庫查詢,直接從緩存中取得。緩存可以大大的改變你的網站整體性能表現,你只需要記得在後台更新產品的時候,把這些緩存一並更新就行了。

還有一些情況下,緩存數據並不是一個好主意,比如在一個數據被頻繁更新的時候,每一次數據的更新,我們都需要去同時更新緩存,緩存的命中率不高,會導致一些額外的性能犧牲。這種情況下,或許直接查數據庫會更好一些。

memcached 的安全性
如果你了解了 memcached 的工作流程, 你可能已經注意到了,在訪問緩存的過程中,沒有任何權限控制的相關流程。如果你的數據不是非常重要的,你大可不必擔心這方面的安全問題。如果你需要的話,以下幾點可以協助你更完全的使用它:

使用唯一的 key:因為在 memcached 中的數據是以一個大的數組形式存在的,所以你應該使用唯一的 key。訪問你的數據的唯一辦法就是通過你保存數據時的 key,除此之外再沒有其它可查詢的辦法。
保證你的 memcached 器安全: 因為 memcached 本身並沒有身份驗證機制,所以對 memcached 的服務器查詢,都應該通過防火牆進行。你可以在防火牆上設定規則,哪些服務器是允許被訪問的,哪些是不允許被訪問的。
加密你的數據: 你可以將數據和 key 通過加密的方式保存在 memcached 中。 這需要花費一些額外的 cpu 時間,但是為了你的數據安全,在情況允許的情況下,這個方法值得你去嘗試。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved