2012-05-25 5 views
5

Jak usunąć klucze w memcached z regex (używając Dalli + Rails)Jak usunąć klucze w memcached z regex (przy użyciu 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 

Nie działa z memcached. Jakieś pomysły?

Odpowiedz

3

zainstalować gem Dalli-store-extensions https://github.com/defconomicron/dalli-store-extensions

W zamiatarki

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

Dalli-store-rozszerzeń używa lokalnej pamięci podręcznej, dzięki czemu może wydostać się z synchronizacji między wystąpieniami aplikacji. (myślę, że to jest problem). zobacz moje pytanie tutaj http://stackoverflow.com/questions/11998762/expiring-memcache-via-regex –

+0

Istnieją również znaczące problemy z wydajnością z ciągłym serializowaniem i deserializacją zestawu kluczy podczas pisania i usuwania kluczy. – Vadim

3

Memcached nie może wykonywać iteracji po swoich kluczach, więc wygaśnięcie wyrażeń regularnych nie zadziała. Zobacz the docs.

Spójrz na this, aby uzyskać potencjalne obejście problemu, ale wymaga dużego nakładu pracy.