2009-04-30 6 views
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にするのですか? 、このデータをmemcacheにする方法は?

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

は今どのアップデートこれらの3つのテーブル(independantly互いの)コード内の場所がたくさんありますので、これらの更新や挿入のいずれかのためにMSGS、TOPIC、またはボードのデータに影響を与えたときに、私たちはdel_cache("XXX_1");に必要ID 1を持つメッセージに関連付けられます。

簡単な解決法はありますか?

答えて

0

memcachedからデータを削除することはできません。そのデータを保存するために使用された正確なキャッシュキーはわかりません。保存されたデータを検索するための "インデックス"または "キーリスト"はありません。

1つの解決策は、失効したデータがほとんど問題にならないようにキャッシュの有効期間を短くすることです。

多分...私は混乱していると思います。私には、それはちょっとあなたのように見えるできるこれを行う。

<?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'); 
+0

まずは、すばやく返信いただきありがとうございます。 現在、私は '接線UDF' MemCache MySqlトリガを使用しています。 MySql Joinクエリに基づいて、マルチテーブルの更新にトリガを使用できますか? –

関連する問題