2012-05-25 7 views
5

Come eliminare un chiavi in ​​memcached con regex (usando Dalli + Rails)Come cancellare un tasto in memcached con regex (usando Dalli + RoR).

def expire_all 
    expire_fragment(Regexp.new("/customers/customers")) 
    expire_fragment(Regexp.new("/customers/customers\/")) 
    expire_fragment(Regexp.new("/agreements/agreements")) 
    expire_fragment(Regexp.new("/agreements/agreements\/")) 
    end 

Non funziona con memcached. Qualche idea?

risposta

3

installare gemma Dalli-store-estensioni https://github.com/defconomicron/dalli-store-extensions

Negli Sweeper

expire_fragment /#{Regexp.escape(restaurant.id)}\/stocks*/ 
+2

Dalli-store-estensioni utilizza una memoria cache locale, in modo si può ottenere fuori sincronia tra le istanze di app. (Penso che sia il problema). vedere la mia domanda qui http://stackoverflow.com/questions/11998762/expiring-memcache-via-regex –

+0

Ci sono anche problemi di prestazioni significativi con serializzazione costante e deserializzazione di un set di chiavi durante la scrittura e l'eliminazione di chiavi. – Vadim

3

Memcached non è in grado di scorrere le sue chiavi, quindi la scadenza di regexp non funzionerà. Vedi the docs.

Dai uno sguardo a this per una potenziale soluzione, anche se richiede molto lavoro.