Aktualisiert die Einrichtung eines Memcached-Schlüssels, der bereits existiert, die Ablaufzeit?

9

Sagen wir, ich habe den folgenden Code:

%Vor%

Nach 60 Wiederholungen der Schleife wird der Schlüssel ablaufen und wenn ich ihn lese, bekomme ich einen NULL? Oder wird die kontinuierliche Einstellung die Ablaufzeit jedes Mal auf 1 Minute nach dem letzten Set schieben?

Die Dokumentation erwähnt das, und ich habe das in verschiedenen Kontexten getestet und ich bin mir ziemlich sicher, dass ich andere Ergebnisse habe.

    
Daniel Magliola 20.05.2011, 02:39
quelle

5 Antworten

6

Ok, habe am Ende meine Antwort durch Experimente gefunden ...

Es stellt sich heraus, dass "Set" das Ablaufdatum verlängert, es ist im Grunde dasselbe wie das Löschen des Elements und das erneute Festlegen mit einem neuen Ablaufdatum.

Allerdings erhöht Increment nicht das Ablaufdatum. Wenn Sie einen Schlüssel inkrementieren, behält er die ursprüngliche Ablaufzeit, die er hatte, wenn Sie ihn an erster Stelle setzen.

    
Daniel Magliola 20.05.2011, 10:55
quelle
4

Wenn Sie einfach die Ablaufzeit für einen bestimmten Schlüssel verlängern möchten, anstatt die Daten jedes Mal im Wesentlichen neu zu setzen, können Sie einfach Memcached :: touch

Mit dem Vorbehalt, dass das Binärprotokoll gemäß dem Kommentar auf der obigen Seite aktiviert sein muss.

%Vor%     
nateevans 29.05.2015 22:15
quelle
0

Das Set interessiert sich überhaupt nicht dafür, was dort gewesen sein könnte, und kann nicht davon ausgehen, dass es sogar aus derselben Anwendung stammt.

Was hast du alles getestet und welche Ergebnisse hast du bekommen? Memcached garantiert nie, einen Wert zurückzugeben. Wenn Sie also gesehen haben, dass es nicht mehr vorhanden ist, ist es durchaus möglich, einen Test zu erstellen, der unabhängig vom Ablaufdatum verloren geht.

    
Dustin 20.05.2011 03:39
quelle
0

Die beste Dokumentationsquelle ist die Memcached-Protokollbeschreibung

%Vor%

Wie Sie vielleicht sehen, hat jeder der obigen Befehle das Feld exptime , das obligatorisch ist.

Also ja - es wird die Ablaufzeit aktualisiert. Darüber hinaus erstellt memcached ein neues Element mit seinem eigenen Schlüssel / flags / expiration / value und ersetzt das alte mit diesem.

    
Cachelot 08.06.2015 21:54
quelle
0

Wenn Sie die Ablaufzeit einfach verlängern möchten, verwenden Sie den Befehl touch , der erstellt wurde, um eine neue Ablaufzeit für einen Schlüssel festzulegen.

Siehe Ссылка oder Ссылка

Debian-Paket: libmemcached-tools

Von der Shell: man memctouch

Andere Distributionen verwenden "memtouch" als Name des Befehlszeilenwerkzeugs

+1 Link vom Memcached-Protokoll als manuelle Referenz: Ссылка

Beispiel:

%Vor%

Wenn $ key Ihr "Schlüssel" ist, wird die Ablaufzeit auf 60 Sekunden gesetzt, wie in Ihrem Beispiel, aber ohne einen "get" zu machen UND den Schlüssel neu zu setzen. Was ist, wenn Ihr 'Schlüssel' noch nicht gesetzt ist und Ihr 'Holen' keine Daten zurückgibt?

    
eddy85br 04.04.2016 19:32
quelle

Tags und Links