Php 如何缓存这些数据?

Php 如何缓存这些数据?,php,mysql,memcached,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 现在代码中有很多地方相互独立地更新这3个表,所以我们需要del_cacheXXX_1;每当这些更新和插入影响id为1的消息的MSG、主题或电路板数据或与之相关的数据时 有一个简单的解决方案吗?如果不知道用于存储数据的确切缓存密钥,

如何缓存这些数据

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
现在代码中有很多地方相互独立地更新这3个表,所以我们需要del_cacheXXX_1;每当这些更新和插入影响id为1的消息的MSG、主题或电路板数据或与之相关的数据时


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

如果不知道用于存储数据的确切缓存密钥,就无法从memcached中删除数据。没有可用于搜索存储数据的索引或键列表

一种解决方案可能是使缓存生存期足够短,这样过时的数据基本上就不需要担心了

或者也许。。。我想我是糊涂了。对我来说,看起来你可以做到这一点


首先,非常感谢彼得的快速回复。目前,我正在使用“tangent UDF”MemCache MySql触发器,使用插入键只更新一个表对我来说效果很好。基于MySql连接查询,我们可以使用触发器进行多表更新吗?
set_cache("MY_WACKY_QUERY_1", data) note: 1 is the message id
<?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' );