2012-05-31 100 views
1

我使用的是memcached and c++。我想使用C++ api從服務器中刪除所有密鑰。如果沒有密鑰列表,最好刪除它們。從緩存中刪除密鑰

文檔中有函數:memcached_dumpmemcached_delete。第一個返回鍵的列表,第二個 - 刪除它們。

但這裏是從第一個函數的文檔報價:

memcached_dump()來獲得memcached的發現(1) 服務器密鑰列表。因爲memcached(1)不保證轉儲所有密鑰,所以您不能假設您已從服務器獲取所有密鑰。

第一個問題:任何獲取所有密鑰的方法,第二個問題是:如何使用這些函數。文檔中沒有任何示例。

謝謝。

回答

1

刪除memcached密鑰的一個很好的方法是使用基本的刪除命令。 但是,因爲我們不知道要刪除哪些鍵,所以您應該在memcached中保存設置數據的日誌。您可以將這些日誌及其時間戳轉儲到任何數據存儲中。通過這個過程,您將能夠刪除具有特定規則的密鑰,從而更好地控制刪除操作。

0

當您需要刪除一堆密鑰時,記錄密鑰是一種管理緩存數據的有用方法。另外,使用前綴可以提供一種管理整個緩存數據的方法。

function save($key,$data,$group){ 
    cache_log_key($group,$key); 
    cache_save($application_prefix.$key,$data); 
} 

function deleteGroup($group){ 
    $loggedKeys = cache_get_log($group); 
    foreach($loggedKeys as $key){ 
     cache_delete($application_prefix.$key); 
    }  
    cache_delete_log($group); 
}