Google App Engine Memcache

8

Wenn ich Memcache in GAE verwende, bemerke ich dieses seltsame Verhalten selten. Ich setze einen Wert in Memcache und wenn ich versuche, den gleichen Wert zu erhalten, bekomme ich None anstelle des ursprünglichen Wertes. Der Memcache-Wert darf innerhalb dieser kurzen Zeitspanne nicht abgelaufen sein. Ich stelle sicher, dass True zurückgegeben wird, wenn ich einen Wert in Memcache einstelle. Was kann sonst dazu führen, dass ein Memcache-Wert verloren geht? Ist es ein allgemeines Systemverhalten?

Codebeispiele:

Zum Einstellen des Wertes

%Vor%

Zum Abrufen des Wertes

%Vor%     
Sam 25.02.2011, 01:37
quelle

2 Antworten

13

Memcache ist von Natur aus unzuverlässig. Es kann nicht garantiert werden, wie lange Daten aufbewahrt werden oder ob überhaupt Daten gespeichert werden. Sie sollten es nicht in der Erwartung verwenden, dass es die gespeicherten Daten immer innerhalb eines Mindestzeitraums zurückgibt.

    
Nick Johnson 25.02.2011, 02:50
quelle
1

Was Sie tun müssen, ist zu überprüfen, ob Memcache den gewünschten Wert in seinem Cache hat (in Ihrem Fall ist es nicht), andernfalls müssen Sie aus dem Datenspeicher abrufen oder neu berechnen. Das ist ein normales Verhalten von Caches.

Der Speicher des Cache ist normalerweise schneller, aber kleiner als der Speicher auf niedrigerer Ebene, die langsamer sind, aber eine größere Kapazität haben.

Stellen Sie sich Festplattencaches vor, es ist viel kleiner als die eigentlichen Festplatten. Nur kleinere Datenblöcke können in den Cache geladen werden. Es ist eine Frage der Hit / Miss-Rate, die die Effektivität des Caches bestimmt.

In GAE wird Ihr Memcache dort dynamisch konfiguriert, Sie haben keine Kontrolle darüber und werden höchstwahrscheinlich mit anderen Anwendungen geteilt. Du solltest also nicht davon ausgehen, dass die Sachen, die du legst, nicht immer im Cache bleiben. Es ist Hit / Miss Spiel.

    
Daniel Baktiar 26.02.2011 02:26
quelle

Tags und Links