2012-05-25 8 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.

Powiązane problemy