2010-03-06 36 views
7

Hiện tại có hai vấn đề với việc lưu trữ các đối tượng ActiveRecord trong memcached.Cách tốt nhất để lưu trữ đối tượng ActiveRecord trong memcached là gì?

  1. Vấn đề lớp/mô-đun không xác định (Google search). Từ những gì tôi đã đọc, đây vẫn là một lỗi mà không ai có một giải pháp thực sự tốt cho. Plugin cache_fu có lẽ là giải pháp tốt nhất cho việc này, gói lệnh gọi lấy của nó trong một khối để cố gắng nắm bắt lỗi này, phân tích cú pháp thông báo và cố tải lớp/mô-đun không xác định.

  2. Vé LH nổi tiếng # 1339 (LH Ticket). Lỗi này sẽ chỉ xảy ra khi bạn có cache_classes được đặt thành FALSE (phát triển, kiểm tra).

Sau khi googling trong nhiều tuần, tôi vẫn chưa tìm thấy kỹ thuật lưu trữ AR trong memcached mà không phải xử lý 2 vấn đề được liệt kê ở trên. Ý tưởng tôi chưa thử là loại bỏ các thuộc tính từ thể hiện dưới dạng chuỗi (chỉ cách AR nhận chúng từ DB trước khi nó tạo kiểu của nó), lưu trữ chúng trong memcached và sau đó truy xuất từ ​​bộ nhớ cache, bằng cách nào đó khởi tạo một đối tượng AR bằng cách sử dụng các giá trị này. Điều này có thể không? Nếu vậy, cách tốt nhất để làm điều đó là gì?

Tôi chỉ đang tìm cách để các nhà phát triển Rails khác giải quyết vấn đề này.

Trả lời

3

Trong các dự án của chúng tôi, chúng tôi lưu trữ đối tượng dưới dạng XML.

cache.write(user.cache_key, user.to_xml) # write to cache 
User.new(Hash.from_xml(cache.read(cache_key))) # reach from cache xml 

Có một số chi phí bổ sung để tuần tự hóa/loại bỏ XML. Nhưng điều này đã cho phép chúng tôi chia sẻ bộ nhớ cache giữa các ứng dụng không phải của Ruby.

+0

Tôi thích ý tưởng này, sẽ thử xem –

+0

Tôi có thể sẽ sử dụng JSON tại thời điểm này. Trong mọi trường hợp, tôi đã tìm thấy lưu trữ bất cứ điều gì nhưng chuỗi, ints, và mảng của cùng một trong memcached là điên rồ. –

+0

Điều này không hoạt động tốt khi bạn phụ thuộc vào các đối tượng AR được truy xuất từ ​​bộ nhớ cache để trả lời #new_record? và #id giống như chúng sẽ được tải từ DB. Phương thức này chỉ tạo một đối tượng AR chưa được lưu mới để chia sẻ một số thuộc tính với đối tượng thực. –

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