2009-04-30 3 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 

Wie memcache diese Daten?Wie memcache ich diese Daten?

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

Nun gibt es viele Stellen im Code der Update dieser 3-Tabellen (unabhängig voneinander von ihnen), so müssen wir del_cache("XXX_1");, wenn eine dieser Aktualisierungen und Einfügungen für MSGS, Thema oder BOARD Daten beeinflussen, oder in Bezug auf die Nachricht mit ID 1

Gibt es eine einfache Lösung?

Antwort

0

Sie können Daten aus Memcached nicht löschen, ohne den genauen Cacheschlüssel zu kennen, der zum Speichern verwendet wurde. Es gibt keine "Index" oder "Schlüsselliste", aus der Sie nach gespeicherten Daten suchen können.

Eine Lösung könnte darin bestehen, die Lebensdauer des Cache so kurz zu halten, dass veraltete Daten meist keine Rolle spielen.

Oder vielleicht ... Ich glaube, ich bin verwirrt. Für mich sieht es aus wie Sie können dies tun.

<?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

Zunächst einmal vielen Dank Peter, für Ihre schnelle Antwort. Momentan benutze ich 'Tangens UDF' MemCache MySql Trigger, es funktioniert gut für mich zu update nur eine Tabelle mit seiner Insertion Key. können wir Trigger für Multi-Tabellen-Updates verwenden, basierend auf MySql Join Abfrage? –