2012-05-25 6 views
5

Wie ein Schlüssel in Memcached mit regex (mit Dalli + Rails)So löschen Sie einen Schlüssel in Memcached mit Regex (mit 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 

Ein Problem mit Memcached löschen. Irgendwelche Ideen?

Antwort

3

installieren gem dalli-store-Erweiterungen https://github.com/defconomicron/dalli-store-extensions

In der Kehrmaschine

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

dalli-store-Erweiterungen verwenden einen lokalen Cache-Speicher, so dass es nicht mehr synchron zwischen App-Instanzen bekommen. (Ich denke, das ist das Problem). Siehe meine Frage hier http://stackoverflow.com/questions/11998762/expiring-memcache-via-regex –

+0

Es gibt auch erhebliche Leistungsprobleme mit ständig Serialisierung und Deserialisierung eines Schlüssels beim Schreiben und Löschen von Schlüsseln. – Vadim

3

Memcached ist nicht in der Lage, über seine Schlüssel zu iterieren, so dass die Verfallszeit von regexp nicht funktioniert. Siehe the docs.

Werfen Sie einen Blick auf this für eine mögliche Problemumgehung, obwohl es arbeitsintensiv ist.