如何對memcache的資料(key-value)進行遍曆操作

來源:互聯網
上載者:User

什麼是memcache
        memcache是一個高效能的分布式的記憶體對象緩衝系統,通過在記憶體裡維護一個統一的巨大的hash表,它能夠用來儲存各種格式的資料,包括映像、視 頻、檔案以及資料庫檢索的結果等。Memcache是danga.com的一個項目,最早是為 LiveJournal 服務的,最初為了加速 LiveJournal 訪問速度而開發的,後來被很多大型的網站採用。目前全世界不少人使用這個快取項目來構建自己大負載的網站,來分擔資料庫的壓力。
為什麼要遍曆
   目前,用到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  
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.        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.        foreach($items as $key=>$values){
9.            $number=$key;;
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操作那麼高效。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.