如何记忆这些数据?

时间:2009-04-30 06:07:06

标签: php mysql memcached

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的消息或与之相关的消息

有一个简单的解决方案吗?

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' );