从存储在memcache密钥中的数组中删除一个值?

时间:2012-03-14 03:39:24

标签: php memcached

假设您是否希望允许用户删除某些数据,但通常它是静态的并且适合缓存。有没有办法从密钥中删除该值,以便您可以保留其他所有缓存的内容并删除用户想要删除的内容?关键是许多数组的数组。数组保存项目的信息,如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);
    } 

这基本上是从谷歌代码示例。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你似乎在描述的正是memcached所做的。所以我想我要么误解了这个问题,要么你没有问你想问什么。

要删除键值对,请使用Memcache::delete。这样做会使所有其他键值对保持不变。