Wie bekomme ich die expire-Zeit für das bestimmte Element in memcached
In runtime, die ich abrufen möchten, die expire time Informationen über einige Elemente in memcached. Ich finde nicht jede zugehörige Schnittstelle auf memcached. Kann ich dies tun? so etwas wie:
mc.get_expire_time('key')
Danke
- Es beschränkt sich nicht python, wenn es gibt jede Art Sprache oder lib kann das tun.
- Python-API auf diese Seite: code.google.com/p/memcached/wiki/Clients
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut memcache-Protokoll (beide text und binäre) weder
get
nochgets
Gegenzug Ablauf der Zeit. Und es gibt keine andere Methode, um es abzurufen. Aber sicher, Sie können pack Ablauf der Zeit, in Wert zusammen mit dem, was Sie jetzt speichern, wenn Sieset
/add
es, um es abrufbar ist.Python-memcache API nicht bieten solche Funktionen. Aber Sie können telnet in memcached-dump-Schlüssel-und Ablaufdatum.
stats items
zeigen die Platten, die Ihre Daten enthalten.Dann verwenden
stats cachedump slab_id count
zu sehen, die Taste, die mit der Ablaufzeit und. Set count auf 0, um alle Tasten.Dummerweise sind diese Informationen nur zu sein scheint, in der Platte stats. Beginnen Sie mit diesem:
und die Schrittweite der Platte (die erste Zahl nach dem 'cachedump'), bis Sie die entsprechende Platte. Sobald Sie ein Ergebnis bekommen, es werde in der form
Der letzten Zahl gibt es (
1389767076
in diesem Fall) ist die unixtime, wenn der Schlüssel abläuft. Sie können konvertieren diese Zahl auf etwas mehr lesbare mit PythonZeit.localtime()
oder on-the-fly mit Wolfram Alpha.Wenn Sie nicht kritisch auf Richtigkeit, ich habe gedacht, über das erstellen von Ihre eigenen Kunden, dass die Gespräche über ein binäres Protokoll und das speichern der Ablaufzeit im Feld Flag der ExtraLength. https://github.com/memcached/memcached/wiki/BinaryProtocolRevamped#set-add-replace
Hier, in den 8 bytes extra, die letzten vier sind die Speicherung TTL, können Sie die ersten 4 zum speichern der Ablaufzeit. Und wenn Sie BEKOMMEN es zurück, es ist noch im flag-Feld.
Ist die Kehrseite davon ist: