如何對memcache的數據(key-value)進行遍歷操做

什麼是memcache

        memcache是一個高性能的分佈式的內存對象緩存系統,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視 頻、文件以及數據庫檢索的結果等。Memcache是danga.com的一個項目,最先是爲 LiveJournal 服務的,最初爲了加速 LiveJournal 訪問速度而開發的,後來被不少大型的網站採用。目前全世界很多人使用這個緩存項目來構建本身大負載的網站,來分擔數據庫的壓力。php

爲何要遍歷

   目前,用到memcache的公司和網站也愈來愈多。Memcache的客戶端操做通常都只提供了get,set等簡單的操做,這些操做都是很是高效的。   雖然memcache是個key-value存儲的系統,可是在某些時候,咱們可能須要遍歷memcache的數據。     數據庫

如何遍歷memcache

 stats命令

 memcache的stats命令包括:緩存

1.        stats  服務器

2.        stats reset  分佈式

3.        stats malloc  性能

4.        stats maps  測試

5.        stats sizes  網站

6.        stats slabs  spa

7.        stats items  對象

8.        stats cachedump slab_id limit_num  

9.        stats detail [on|off|dump]  

經過命令完成遍歷

       經過這些stats命令咱們就能夠完成memcache存儲的內容的遍歷,OK,下面咱們經過telnet直接鏈接到memcache經過這些命令來完成相關的操做。 
      telnet到192.168.15.225(局域網測試機器)的memcache服務器


執行stats items命令,能夠看到出現 不少的items行。 

執行stats cachedump 3 0命令。這裏的3表示上面圖中items後面的數字,0標示顯示所有的數據,若是是1就標示只顯示1條。 
下圖爲執行後的結果,item後面的字符串爲key

 
 經過上面列出的key咱們就能夠遍歷全部的數據了,下面咱們取出某一條數據,key爲Uc!uLh的數據。

  
       到這裏,你也許明白了怎麼去遍歷memcache的數據了。 

代碼實現

       下面貼上一段php實現的遍歷memcache數據的代碼,其餘語言能夠參考代碼本身實現。

下面貼上一段php實現的遍歷memcache數據的代碼,其餘語言能夠參考代碼本身實現。

 

1.        <?php

2.        $host='192.168.15.225';

3.        $port=11211;

4.        $mem=new Memcache();

5.        $mem->connect($host,$port);

6.        $items=$mem->getExtendedStats (‘items’);

7.        $items=$items["$host:$port"]['items'];

8.        for($i=0,$len=count($items);$i<$len;$i++){

9.            $number=$items[$i]['number'];

10.         $str=$mem->getExtendedStats ("cachedump",$number,0);

11.         $line=$str["$host:$port"];

12.         if( is_array($line) && count($line)>0){

13.             foreach($line as $key=>$value){

14.                 echo $key.'=>';

15.                 print_r($mem->get($key));

16.                 echo "\r\n";

17.             }

18.         }

19.     }

20.     ?>

擴展功能

     由此能夠實現查找memcache某個前綴的key的數據,或者查詢某些value的key。甚至實現數據庫的like功能。請注意:遍歷memcache的操做並無memcache的get操做那麼高效。

相關文章
相關標籤/搜索