从存储在memcache键中的数组中删除一个值


Remove a value from an array stored in a memcache key?

假设您希望允许用户删除一些数据,但通常它是静态的,适合缓存。有没有一种方法可以从键中删除该值,这样你就可以缓存其他所有内容,并删除用户想要删除的内容?关键是一个由许多数组组成的数组。数组保存项目的信息,如id、用户名、标题等,如果用户想要删除,则需要删除其中一个数组。

示例代码:

储存物品:

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

这基本上是正确的谷歌代码的例子。

执行此操作的唯一方法是将键的值读取到变量中,修改该变量的内容,然后将整个键写回memcached。

memcached完全在顶级键:值层操作;它不在乎也不理解你把什么作为价值观。就它而言,您作为值放入的"数组数组"只是另一个字符串。

您所描述的正是memcached的功能。所以我想,要么是我误解了这个问题,要么是你没有问你想问的问题。

要删除键值对,请使用Memcache::delete。这样做将保留所有其他键值对。