程式遍歷memcache中的所有key value

2021-07-25 23:54:07 字數 2187 閱讀 3938

memcache是乙個高效能的分布式的記憶體物件快取系統,通過在記憶體裡維護乙個統一的巨大的hash表,它能夠用來儲存各種格式的資料,包括影象、視 頻、檔案以及資料庫檢索的結果等。memcache是danga.com的乙個專案,最早是為 livejournal 服務的,最初為了加速 livejournal 訪問速度而開發的,後來被很多大型的**採用。目前全世界不少人使用這個快取專案來構建自己大負載的**,來分擔資料庫的壓力。

目前,用到memcache的公司和**也越來越多。memcache的客戶端操作一般都只提供了get,set等簡單的操作,這些操作都是非常高效的。   雖然memcache是個key-value儲存的系統,但是在某些時候,我們可能需要遍歷memcache的資料。     

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資料的**,其他語言可以參考**自己實現。

1.        

<?php

2.        

$host

='192.168.15.225';

3.        

$port

=11211;

4.        

$mem

=newmemcache();

5.        

$mem

->connect(

$host

,$port);

6.        

$items

=$mem

->getextendedstats (

『items』);

7.        

$items

=$items

["$host:$port"

]['items'];

8.foreach($items as $key=>$values)

18.     }

19.     }

20.     

?>

由此可以實現查詢memcache某個字首的key的資料,或者查詢某些value的key。甚至實現資料庫的like功能。請注意:遍歷memcache的操作並沒有memcache的get操作那麼高效。

Java如何遍歷Properties的所有的元素

properties pro new properties try catch filenotfoundexception e catch ioexception e propertynames 返回屬性列表中所有鍵的列舉 enumeration enu2 pro.propertynames whi...

thinkphp中memcache的用法例項

1 並安裝memcache window下安裝memcache.memcached.exe 到d m程式設計客棧emcached memcached.exe.在執行cmd 輸入 d memcached memcached.exe d install安裝 執行d memcached memcached...

php遍歷windows下中文目錄下的所有檔名

有時需要遍歷windows下中文目錄下的所有的檔名,使用utf 8編碼的檔案有時會出現亂碼,並且不能成功的執行,這時需要對檔案的編碼進行一下轉換,使用scandir這個函式的時候會連同目錄一下列出來,大家可以通過is dir 這個函式來 做乙個判斷,我使用目錄下所的檔案都有擴充套件所以只做了乙個簡單...