memcached - 如何優雅的使用memcache和php配合呢?

來源:互聯網
上載者:User
最近在研究memcache和php配合小弟不知道該如何使用呢,是先要把整張表的資料全部查出來,緩衝的記憶體上,然後再做類似sql的查詢嗎?就是直接查記憶體而不是查表這樣嗎?

求大牛給點例子哦

回複內容:

最近在研究memcache和php配合小弟不知道該如何使用呢,是先要把整張表的資料全部查出來,緩衝的記憶體上,然後再做類似sql的查詢嗎?就是直接查記憶體而不是查表這樣嗎?

求大牛給點例子哦

memcache 是 key => value 的方式,一個key 對應 一個 value 。

memcache一般多用於儲存大型能開銷的資料,比如SQL結果集。將其序列化或者json_encode後存入memcache中,並命名為一個唯一的key值。下次則直接從memcached中擷取該值。

註:經過測試serialize 後的string 存入memcached 比 json_encode後的string要快很多。 若直接將array存入memcached實際上memcached底層有將array進行 serialize(array); (我這裡一直記錯!!)

如下執行個體:有資料table threads. 我們將其結果緩衝起來。

// 首先進行查詢memcached中threads_list是否為非空集合$list = json_decode($memcached->get("threads_list"));if(!$list){    $query = $db->query("SELECT * FROM `threads` ");    while($value = $db->fetch_array($query)){         $list[] = $value;    }    //進行memcached插入    //$memcached->set(索引值,內容,失效時間);    $memcached->set("threads_list",json_encode($list),86400);}print_r($list);

以上操作將有效減少mysql查詢的開銷。當然memcached並非僅局限於sql的儲存。具體還需要看業務上的需求。

不過強烈推薦redis!!!!!

原理:將你 SQL 查詢的結果緩衝在 memcache 裡,下次執行同樣的查詢就直接從緩衝中讀取,而不用查詢資料庫,緩解資料庫壓力。

connect('localhost','11211');    //準備SQL語句    $sql='SELECT * FROM user';    //設定一個鍵名    $key=md5($sql);    $data=$mem->get($key);    //第二次之後的查詢    if(!$data){        try{            //連結mysql             $dsn="mysql:host=localhost;dbname=bbs";            $pdo=new PDO($dsn,'root','root');            //設定字元集            $pdo->exec('set names utf8');            $stmt=$pdo->prepare($sql);            $stmt->execute();            $data=$stmt->fetchAll();            //把資料存放區到memcache中(第一次查詢)            $mem->add($key,$data);        }catch(PDOException $e){            echo $e->getMessage();        }    }    $mem->close();    print_r($data);?>

剛錄好的視頻,講Memcache的
近距離探索memcache

同樣的查詢條件,可能能來不一樣的結果,這樣緩衝更新問題如何解決?

先查和後查看你怎麼寫代碼。如果你準備把整個表或者庫都寫進Memcached的呢,那就的把整個商務程序都資料,也就是說每次查詢都是查詢Memcached,相當於是把Memcached當資料庫運用。如果只是簡單的操作,http://segmentfault.com/q/1010000000257857#a-1020000000257889已經說了。其實Memcached這種key、value的儲存,看你key怎麼產生了,如果單機使用的話,用條件來產生就可以了,叢集的話就看你怎麼分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.