SELECT a.* b.* c.*
FROM TOPIC a, BOARD b, MSGS c
WHERE c.MessageID = 1 AND a.TopicID = c.MessageID AND b.BoardID = c.BoardID
如何记忆这些数据?
set_cache("MY_WACKY_QUERY_1", data) note: 1 is the message id
现在代码中有很多地方更新这3个表(彼此独立),所以每当这些更新和插入中的任何一个影响MSGS,TOPIC或BOARD数据时,我们都需要del_cache("XXX_1");
, ID为1的消息或与之相关的消息
有一个简单的解决方案吗?
答案 0 :(得分:0)
如果不知道用于存储数据的确切缓存密钥,则无法从memcached中删除数据。没有“索引”或“密钥列表”,您可以从中搜索存储的数据。
一种解决方案可能是让您的缓存生命周期足够短,以便陈旧数据主要是无关紧要的。
或许......我觉得我很困惑。对我来说,它看起来像你可以这样做。
<?php
$memcache = new Memcache;
$memcache->connect( 'memcache_host', 11211 );
// do select query here, store into $result
$memcache->set( 'MY_QUERY_1', $result, false, 600 );
// do another select query here, store into $result
$memcache->set( 'MY_QUERY_2', $result, false, 600 );
// Query here updates record with id of 1
$memcache->delete( 'MY_QUERY_1' );