2010-04-01 8 views
8

En tiempo de ejecución, quiero recuperar la información de tiempo de caducidad sobre algunos elementos en memcached. No encontré ninguna interfaz relacionada en memcached. ¿Puedo hacer esto? algo así como: mc.get_expire_time ('llave')¿Cómo puedo obtener el tiempo de caducidad para el elemento en particular en memcached

Gracias

+0

No se limita a python, si hay algún lenguaje o lib bueno podría hacerlo. – maguschen

+0

API de Python en esta página: http://code.google.com/p/memcached/wiki/Clients –

Respuesta

5

De acuerdo con el protocolo memcache (tanto text y binary) niether get ni gets retorno hora de caducidad. Y no hay otro método para recuperarlo. Pero seguro que puede empaquetar el tiempo de expiración en valor junto con lo que almacena ahora cuando lo set/add para que sea recuperable.

+0

Gracias por su respuesta, Denis. – maguschen

11

Python Memcache API no proporciona tales funcionalidades. Sin embargo, puede hacer telnet en memcached para volcar todas las claves y el tiempo de caducidad.

> telnet localhost 11211 

stats items muestran las losas que contienen sus datos.

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

A continuación, utilice stats cachedump slab_id count para ver el momento clave y la espiración. Establezca la cuenta en 0 para recuperar todas las claves.

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

Aunque parezca molesto, esta información solo aparece en las estadísticas de la losa. Comenzar con esto:

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

e incrementar la losa (el primer número después de 'cachedump') hasta que encuentre la losa correspondiente. Una vez que se obtiene un resultado, que será de la forma

ITEM my_key [2 b; 1389767076 s] 

El último número allí (1389767076 en este caso) es el unixtime cuando la llave se vencerá. Puede convertir este número a algo más legible para humanos con Python's time.localtime() o sobre la marcha usando Wolfram Alpha.

+0

Aquí hay un código http://codereview.stackexchange.com/questions/636/review-request-python-class-w-telnet-interface-to-memcached que se encarga de casi todo lo que se requiere para seguir este enfoque. –

Cuestiones relacionadas