2012-03-14 18 views
1

ユーザーが一部のデータを削除できるようにしたいが、通常は静的でキャッシュに適しているとします。その値をキーから削除して他のものをすべてキャッシュし、削除したいものを取り除く方法はありますか?キーは多くの配列の配列になります。配列は、id、ユーザー名、タイトルなどの項目の情報を保持しています。ユーザーが削除したい場合は、それらの配列の1つを削除します。memcacheキーに格納されている配列から値を削除しますか?

例コード:

保存するもの:それは右、Googleのコード例から、基本的です

$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

+0

申し訳ありません、新しいです。私は1つのキーと値のペアを意味すると信じています。ですから、単純な例です: 'SELECT id、name FROM table LIMIT 100'ですので、それらのキーを100に入れてそのうちの1つを削除します。 – qitch

+0

その1行はキーと値のペアではありません。 1つのキーの値に100行が格納されている場合は、100のすべてに対して1つのキーと値のペアです。キーは単一のキーで、値は100行のセットです。 – Amber

答えて

1

これを実行する唯一の方法は、キーの値を変数に読み込み、その変数の内容を変更してから、キー全体をmemcachedに書き戻すことです。

memcachedは、トップレベルのキーで完全に動作します。それはあなたが何を価値として入れているかを気にも理解もしません。それが重要な限り、あなたが値として入れている配列の配列は単なる別の文字列です。

+0

それは私の考えのプロセスでした。別の質問をするべきかどうかわかりませんが、どうやってそれを行うのかは分かりません。キーに格納すると、array(2){[0] => {array(2){'id' => "1"、 'name' => "bob"}}のようになります。 – qitch

+0

質問を編集最初に値を保存するために使用しているコードを表示します。 – Amber

+0

それを変数に入れて修正する答えは、それが悪い場合を除き、私が行うべきことです。memcachedに格納するコードを変更する必要がありますか?私はそれを修正する方法に別の質問をしなければなりません。 – qitch

0

あなたが説明しているように見えるのは、正確にmemcachedの機能です。だから、私はその質問を誤解したか、あなたが尋ねたいものを尋ねなかったと思っています。

キーと値のペアを削除するには、Memcache::deleteを使用します。そうすることで、他のすべてのキーと値のペアがそのまま残ります。

関連する問題