2013-03-20 32 views
6

Tôi đã gặp khó khăn trong một thời gian để tìm hiểu xem có thời gian hết hạn mặc định do Rails đặt hay không, trong trường hợp chúng tôi không cung cấp bất kỳ khi lưu trữ cặp khóa-giá trị vào memcache? ví dụ: Rails.cache.write ('some-key', 'some-value')Rails memcache lưu trữ mặc định thời gian hết hạn tự động

Đường ray sẽ đặt thời gian hết hạn theo mặc định nếu chúng tôi chưa chỉ định?

Trả lời

5

Nếu bạn đang sử dụng lớp mặc định, được xây dựng trong MemCacheStore do Rails cung cấp, thì không. Nó sẽ không giả định một thời gian hết hạn khi bạn tạo mục nhập bộ nhớ cache mới. Bạn có thể read the applicable code để xác minh điều đó. Nó sẽ kiểm tra xem bạn đã vượt qua một tùy chọn expires_in với phương pháp #write như

Rails.cache.write("key", "content", expires_in: 2.hours) 

và nếu bạn chưa có, chỉ đơn giản là đi từ 0 đến memcache cho thấy không có thời gian hết hạn. Hi vọng điêu nay co ich!

5

Nếu bạn đang sử dụng phiên bản mới hơn (và tôi nghĩ tốt hơn) Dalli đá quý memcached, bạn có thể cấu hình nó ở adapter cấp sử dụng một dòng như sau:

config.cache_store = :dalli_store, 'cache-1.example.com', 'cache-2.example.com', 
    { :namespace => NAME_OF_RAILS_APP, :expires_in => 1.day} 

Xem README cho một lời giải thích chi tiết của tùy chọn :expires_in. Nhìn chung, tôi nghĩ rằng Dalli đáng để kiểm tra nhiều hơn là tính năng này, nó cũng nhanh hơn và hỗ trợ một số tính năng xác thực mới hơn, v.v.

+0

Cuộc gọi tốt. 'MemCacheStore' chỉ là một wrapper mỏng trên Dalli, sau khi tất cả. – piersadrian

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