2010-04-01 2 views
8

In Laufzeit möchte ich die Ablaufzeit Informationen über einige Elemente in memcached abrufen. Ich habe keine verwandte Schnittstelle auf memcached gefunden. Darf ich das machen? so etwas wie: mc.get_expire_time ('Schlüssel')Wie kann ich die Ablaufzeit für das bestimmte Element in memcached erhalten

Danke

+0

Es ist nicht beschränkt auf Python, wenn es irgendeine Art Sprache oder Lib könnte dies tun. – maguschen

+0

Python APIs auf dieser Seite: http://code.google.com/p/memcached/wiki/Clients –

Antwort

5

Nach memcache Protokoll (beide text und binary) niether get noch gets Rückkehr Ablaufzeit. Und es gibt keine andere Methode, um sie abzurufen. Aber sicher können Sie Verfallszeit in Wert zusammen mit dem, was Sie jetzt speichern, wenn Sie set/add es abrufbar machen.

+0

Danke für Ihre Antwort, Denis. – maguschen

11

Python memcache API bietet keine solchen Funktionen. Sie können jedoch telnet in memcached, um alle Schlüssel und die Ablaufzeit abzulegen.

> telnet localhost 11211 

stats items zeigen die Platten, die Ihre Daten enthalten.

stats items 
STAT items:12:number 1108 
... 
END 

Dann stats cachedump slab_id count verwenden, um die Schlüssel und Ablaufzeit zu sehen. Setzen Sie die Anzahl auf 0, um alle Schlüssel abzurufen.

stats cachedump 12 1 
ITEM abc [100 b; 1528336485 s] 
END 
5

Ärgerlich scheint diese Information nur in den Plattenstatistiken zur Verfügung gestellt zu werden. Beginnen Sie mit diesem:

[$]> (sleep 1; echo "stats cachedump 1 0"; sleep 1; echo "quit";) | telnet localhost 11211 | grep 'my_key' 

und erhöhen die Platte (die erste Zahl nach ‚cachedump‘), bis Sie die entsprechende Platte finden. Sobald Sie ein Ergebnis bekommen, wird es

ITEM my_key [2 b; 1389767076 s] 

Die letzte Zahl gibt (1389767076 in diesem Fall) von der Form ist die unixtime, wenn der Schlüssel abläuft. Sie können diese Zahl mit Pythons time.localtime() oder on-the-fly unter Verwendung von Wolfram Alpha in etwas menschlicher lesbarer konvertieren.

+0

Hier ist ein Code http://codereview.stackexchange.com/questions/636/review-request-python-class-w-telnet-interface-to-memcached, der sich um fast alles kümmert, was erforderlich ist, um diesem Ansatz zu folgen. –