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.
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.
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%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.
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.
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.
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?
Tags und Links memcached