0
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

如何memcache这些数据?

set_cache("MY_WACKY_QUERY_1", data) note: 1 is the message id

现在代码中有很多地方会更新这 3 个表(彼此独立),所以del_cache("XXX_1");每当这些更新和插入中的任何一个影响到带有 id 的消息的 MSGS、TOPIC 或 BOARD 数据或与之相关时,我们都需要1

有简单的解决方案吗?

4

1 回答 1

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' );
于 2009-04-30T07:44:44.933 回答