2012-05-25 9 views
5

cómo eliminar un llaves en memcached con expresiones regulares (usando Rails Dalli +)Cómo eliminar claves en memcached con expresiones regulares (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 

No trabajar con memcached. ¿Algunas ideas?

Respuesta

3

instalar la gema dalli-Store-extensiones https://github.com/defconomicron/dalli-store-extensions

En la barredora

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

dalli-Store-extensiones utiliza una memoria caché local, por lo que puede conseguir fuera de sincronía entre las instancias de aplicaciones. (creo que ese es el problema) vea mi pregunta aquí http://stackoverflow.com/questions/11998762/expiring-memcache-via-regex –

+0

También hay problemas de rendimiento significativos con la serialización y deserialización constantes de un conjunto de claves al escribir y eliminar claves. – Vadim

3

Memcached no puede iterar sobre sus claves, por lo que la expiración de expresiones regulares no funcionará. Ver the docs.

Eche un vistazo a this para una posible solución alternativa, aunque es laborioso.

Cuestiones relacionadas