Удалить значение из массива, хранящегося в ключе memcache? - PullRequest
1 голос
/ 14 марта 2012

Скажите, если вы хотите, чтобы пользователь мог удалить некоторые данные, но обычно они статичны и хороши для кэширования.Есть ли способ удалить это значение из ключа, чтобы вы могли сохранить все остальное в кэше и избавиться от того, что пользователь хотел удалить?Ключ будет массивом из множества массивов.Массивы содержат информацию для элемента, такую ​​как идентификатор, имя пользователя, заголовок и т. Д., И они могут захотеть удалить один из этих массивов, если пользователь хочет удалить.

Пример кода:

Хранениевещи:

    $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);
    } 

Это в основном прямо из примера кода Google.

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Единственный способ сделать это - прочитать значение ключа в переменную, изменить содержимое этой переменной, а затем записать весь ключ обратно в memcached.

memcached работает полностью на верхнем уровнеключ: значение слоя;это не заботится и не понимает, что вы вкладываете в это как ценности.Что касается этого, то «массив массивов», который вы вводите в качестве значения, является просто еще одной строкой.

0 голосов
/ 14 марта 2012

То, что вы описываете, это именно то, что делает memcached. Поэтому я думаю, что либо я неправильно понял вопрос, либо вы не спросили то, что хотели спросить.

Чтобы удалить пару ключ-значение, используйте Memcache::delete. В результате все остальные пары ключ-значение останутся нетронутыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...