从存储在memcache密钥中的数组中删除值?
问题描述:
说出是否允许用户删除某些数据,但通常它是静态的并且适用于缓存。有没有办法从键中删除这个值,这样你就可以保持所有其他的缓存并摆脱用户想要删除的内容?关键是许多数组的数组。这些数组包含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);
}
它基本上直接从谷歌的代码示例。
答
要做到这一点,唯一的方法是将密钥的值读入变量,修改该变量的内容,然后将整个密钥写回memcached。
memcached完全运行在*键值层;它并不关心也不理解你把它作为价值。就它而言,你作为一个值放入的“数组数组”就是另一个字符串。
您的意思是“删除一个键值对,但保留其他值”或“从包含多个事物的'值中删除某些内容”? – Amber 2012-03-14 03:41:57
对不起,我是新手。我相信我的意思是一个关键值对。所以一个简单的例子:'SELECT id,name FROM table LIMIT 100',所以你有那些100放入密钥并且想要删除其中的一个。 – qitch 2012-03-14 03:44:46
这一行不是键值对。如果您在某个键的值中存储了100行,则这是所有100个键值对中的一个。键是单个键,并且该值是一组100行。 – Amber 2012-03-14 03:45:37