2012-05-25 28 views
5

Làm thế nào để xóa một phím trong memcached với regex (sử dụng Dalli + Rails)Làm thế nào để xóa một khóa trong memcached với regex (sử dụng 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 

Không làm việc với memcached. Bất kỳ ý tưởng?

Trả lời

3

cài đặt đá quý Dalli-store-extensions https://github.com/defconomicron/dalli-store-extensions

Trong Sweeper

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

Dalli-store-phần mở rộng sử dụng một bộ nhớ cache địa phương, vì vậy nó có thể được ra khỏi đồng bộ giữa các trường ứng dụng. (Tôi nghĩ đó là vấn đề). xem câu hỏi của tôi ở đây http://stackoverflow.com/questions/11998762/expiring-memcache-via-regex –

+0

Ngoài ra còn có các vấn đề hiệu suất đáng kể với việc liên tục serializing và deserializing một bộ khóa khi viết và xóa các phím. – Vadim

3

Memcached không thể lặp qua các khóa của nó, vì vậy thời hạn hết hạn regexp sẽ không hoạt động. Xem the docs.

Hãy xem this để biết cách giải quyết tiềm ẩn, mặc dù nó tốn nhiều công sức.

Các vấn đề liên quan