2012-03-14 91 views
1

說出是否允許用戶刪除某些數據,但通常它是靜態的並且適用於緩存。有沒有辦法從鍵中刪除這個值,這樣你就可以保持所有其他的緩存並擺脫用戶想要刪除的內容?關鍵是許多數組的數組。這些數組包含id,用戶名,標題等項目的信息,並且如果用戶想要刪除這些數組,則希望刪除其中的一個數組。從存儲在memcache密鑰中的數組中刪除值?

示例代碼:

存儲東西:

$cachedData = $this->memcache->get($this->key); 
    if($cachedData === false){ 
     $cachedData = array(); 
     $sql = "SELECT id, name FROM table LIMIT 100"; 
     $res = mysql_query($sql); 
     while($rec = mysql_fetch_assoc($res)){ 
      $cachedData[] = $rec; 
     } 
     // cache for 10 minutes 
     $this->memcache->set($this->key, $cachedData, 0, 600); 
    } 

它基本上直接從谷歌的代碼示例。

+0

您的意思是「刪除一個鍵值對,但保留其他值」或「從包含多個事物的'值中刪除某些內容」? – Amber 2012-03-14 03:41:57

+0

對不起,我是新手。我相信我的意思是一個關鍵值對。所以一個簡單的例子:'SELECT id,name FROM table LIMIT 100',所以你有那些100放入密鑰並且想要刪除其中的一個。 – qitch 2012-03-14 03:44:46

+0

這一行不是鍵值對。如果您在某個鍵的值中存儲了100行,則這是所有100個鍵值對中的一個。鍵是單個鍵,並且該值是一組100行。 – Amber 2012-03-14 03:45:37

回答

1

要做到這一點,唯一的方法是將密鑰的值讀入變量,修改該變量的內容,然後將整個密鑰寫回memcached。

memcached完全運行在頂級鍵值層;它並不關心也不理解你把它作爲價值。就它而言,你作爲一個值放入的「數組數組」就是另一個字符串。

+0

這是我的思考過程。我不知道我是否應該打開另一個問題,但我不知道該怎麼做。當我存儲到密鑰它結束了像數組(2){[0] => {array(2){'id'=>「1」,'name'=>「bob」}} – qitch 2012-03-14 03:48:33

+0

編輯您的問題以顯示您用於存儲值的代碼。 – Amber 2012-03-14 03:49:44

+0

把它放入一個變量並修改它的答案是我看到我應該做的,除非那是壞的,我應該更改用於存儲在memcached中的代碼?我應該在如何修改它,因爲我不知道另一個問題。 – qitch 2012-03-14 04:01:33

0

你似乎正在描述的是memcached的功能。所以我在想,要麼我誤解了這個問題,或者你沒有問你想問什麼。

要刪除鍵值對,請使用Memcache::delete。這樣做會使所有其他鍵值對保持不變。