2010-04-01 7 views
8

In runtime, voglio recuperare le informazioni sul tempo di scadenza su alcuni elementi in memcached. Non ho trovato alcuna interfaccia correlata su memcached. Posso farlo? qualcosa di simile: mc.get_expire_time ('chiave')Come posso ottenere il tempo di scadenza per la particolare voce in memcached

Grazie

+0

Non è limitato a Python, se esistono un linguaggio gentile o lib potrebbe farlo. API – maguschen

+0

Python su questa pagina: http://code.google.com/p/memcached/wiki/Clients –

risposta

5

Secondo protocollo memcache (sia text e binary) niether getgets ritorno tempo di scadenza. E non c'è altro metodo per recuperarlo. Ma sicuro di poter imballare il tempo di scadenza in valore insieme a ciò che si memorizza ora quando si è set/add per renderlo recuperabile.

+0

Grazie per la tua risposta, Denis. – maguschen

11

API Python Memcache non fornisce tali funzionalità. Comunque puoi telnet in memcached per scaricare tutte le chiavi e il tempo di scadenza.

> telnet localhost 11211 

stats items mostrano le lastre che contengono i dati.

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

Quindi utilizzare stats cachedump slab_id count per vedere il tempo e la chiave di scadenza. Impostare il conteggio su 0 per recuperare tutti i tasti.

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

Sorprendentemente, questa informazione sembra essere fornita solo nelle statistiche della lastra. Inizia con questo:

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

e incrementare la lastra (il primo numero dopo 'cachedump') fino a trovare la lastra appropriata. Una volta che si ottiene un risultato, sarà della forma

ITEM my_key [2 b; 1389767076 s] 

L'ultimo numero là (1389767076 in questo caso) è il unixtime quando la chiave scadrà. È possibile convertire questo numero in qualcosa di più leggibile con Python time.localtime() o al volo usando Wolfram Alpha.

+0

C'è del codice qui http://codereview.stackexchange.com/questions/636/review-request-python-class-w-telnet-interface-to-memcached che si occupa di quasi tutto il necessario per seguire questo approccio. –

Problemi correlati