Frage

Was maximale Schlüsselablaufzeit des Memcached wird?

Wenn ich nicht eine Ablaufzeit zur Verfügung stellen und die Cache voll ist, was passiert?

War es hilfreich?

Lösung

Sie können die SET-Taste Ablauf zu einem Zeitpunkt durch einen Unix-Zeitstempel statt eine Anzahl von Tagen zu liefern. Dieses Datum kann mehr als 30 Tage in der Zukunft sein:

  

Verfallszeiten werden in unsigned integer Sekunden angegeben. Sie können von 0 gesetzt werden, "nie ablaufen", bis zu 30 Tagen bedeuten (60 * 60 * 24 * 30). Jedes Mal höher als 30 Tage als Unix-Zeitstempel Datum interpretiert. Wenn Sie ein Objekt ablaufen sollen am 1. Januar des nächsten Jahres, das ist, wie Sie das tun.

     

https://github.com/memcached/memcached/wiki/Programming#expiration

Aber wie Sie sagen, wenn Sie Einstellung Schlüssel Ablauf auf einen Betrag von Zeit eher als ein Datum, das Maximum beträgt 2.592.000 Sekunden oder 30 Tage.

Andere Tipps

Wenn Sie nicht bieten Ablauf und Cache voll ist dann die ältesten Schlüsselwerte sind abgelaufen zuerst:

  

Der Speicher wird auch freigegeben, wenn es an der Zeit ein neues Objekt zu speichern. Wenn es keine freien Stücke, und keine freien Seiten in der entsprechenden Platte Klasse sind, werden Memcached für ein Element am Ende des LRU aussehen „zurückzufordern“. Es werden die letzten Artikel im Heck für eine Suche, die bereits abgelaufen ist, und ist damit für die Wiederverwendung frei. Wenn es nicht ein abgelaufenes Element jedoch finden kann, wird es „evict“ eine, die noch nicht abgelaufen ist. Diese wird dann in mehreren statistischen Zähler festgestellt

https://github.com/memcached/memcached / wiki / UserInternals # when-sind-Elemente-geräumt

Nein, es gibt keine Begrenzung. Die 30 Tage Grenze ist, wenn Sie die Anzahl der Sekunden geben sie dort bleiben sollen, aber wenn Sie einen Zeitstempel geben, gibt es nur den max lang oder int-Wert an der Maschine, die eine Grenze sein kann.

->set('key', 'value', time() + 24*60*60*365) den Schlüssel Aufenthalt dort für ein Jahr zum Beispiel, aber ja, wenn der Cache voll oder neu gestartet wird zwischendurch, kann dieser Wert gelöscht werden.

  

Eine Ablaufzeit in Sekunden. Kann bis zu 30 Tage. Nach 30 Tagen   wird als Unix-Zeitstempel von einem genauen Zeitpunkt behandelt.

     

https://code.google.com/p/memcached/wiki/ NewCommands # Standard_Protocol

OK, ich fand heraus, dass die Anzahl der Sekunden nicht 2592000 (30 Tage) nicht überschreiten. So ist die maximale Ablaufzeit beträgt 30 Tage.

Sieht aus wie einige Antworten nicht mehr gültig sind.

fand ich einen Schlüssel aus bekommt gar nicht gesetzt, wenn die TTL zu hoch ist. Zum Beispiel 2992553564.

mit dem folgenden PHP-Code getestet:

var_dump($memcached->set($id, "hello", 2992553564);  // true
var_dump($memcached->get($id));                      // empty!

var_dump($memcached->set($id, "hello", 500);  // true
var_dump($memcached->get($id));               // "hello"

Version ist memcached 1.4.14-0ubuntu9.

Auf Laravel config.session.lifetime Einstellung, die eingestellt, wenn ein äquivalent von 30 Tagen oben zu sein, wird als ein Zeitstempel in Betracht gezogen werden (dies wird einen Fehler von token mismatch jedesmal memcached geben, die unter der Annahme verwendet wird).

zu beantworten, könnte Memcached Ablauf jederzeit eingestellt werden. (Laravel die Standard (auf v5.0 Einstellung) wird Sie zu einem bereits verfallen Zeitstempel). Wenn Sie es nicht festgelegt haben, wird die defualt verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top