Vâng, redis là tốt cho điều đó. Nhưng để nắm được ý chính, về cơ bản có hai cách tiếp cận để lưu vào bộ nhớ đệm. Tùy thuộc vào việc bạn sử dụng khung (và khung nào) hay không, bạn có thể có tùy chọn đầu tiên có sẵn trong tiêu chuẩn hoặc với việc sử dụng trình cắm:
- Truy vấn cơ sở dữ liệu bộ nhớ cache, tức là - các truy vấn được chọn và kết quả của chúng sẽ được lưu lại để truy cập nhanh hơn trong một thời gian nhất định hoặc cho đến khi xóa bộ nhớ cache (hữu ích sau khi cập nhật databse). Trong trường hợp này, bạn có thể sử dụng bộ nhớ đệm truy vấn mysql tích hợp sẵn, nó sẽ đơn giản hơn so với việc sử dụng kho khóa-giá trị bổ sung hoặc bạn có thể ghi đè tích hợp cơ sở dữ liệu mặc định với lớp của riêng bạn bằng cách sử dụng bộ nhớ cache (ví dụ:http://pythonhosted.org / johnny-cache /).
- Bộ nhớ đệm tùy chỉnh, tức là tạo các cấu trúc của riêng bạn để được lưu trong bộ nhớ cache và định kỳ hoặc thủ công lấp đầy chúng bằng dữ liệu được tìm nạp từ cơ sở dữ liệu. Nó linh hoạt hơn và có khả năng mạnh mẽ hơn, vì bạn có thể sử dụng các tính năng redis tích hợp sẵn như danh sách hoặc nhóm được sắp xếp, giúp chi phí cập nhật nhỏ hơn nhiều. Nó đòi hỏi nhiều mã hóa hơn một chút, nhưng nó thường mang lại kết quả tốt hơn, vì nó được tùy chỉnh nhiều hơn. Ví dụ tốt là giữ các bài báo hàng đầu ở dạng danh sách id redis, và sau đó truy cập (các) bài viết được đăng nhiều kỳ với id đã cho cũng như từ redis. Bạn có thể giữ cho bài báo đó không được chuẩn hóa - tức là. Đối tượng được tuần tự hóa có thể chứa id người dùng cũng như tên người dùng, do đó, bạn có thể giảm thiểu chi phí cho các truy vấn bổ sung.
Việc quyết định chọn cách tiếp cận nào là do bạn quyết định, cá nhân tôi hầu như luôn đi với cách tiếp cận số hai. Tuy nhiên, tất nhiên, mọi thứ phụ thuộc vào lượng thời gian bạn có và những gì ứng dụng phải làm - bạn cũng có thể bắt đầu với bộ nhớ đệm truy vấn mysql và nếu kết quả không đủ tốt, hãy chuyển sang bộ nhớ đệm tùy chỉnh và chuyển sang bộ nhớ đệm tùy chỉnh.