2013-06-10 39 views
10

Tôi đã sử dụng PostgreSQL trong thời gian dài nhất. Tất cả dữ liệu của tôi đều tồn tại bên trong Postgres. Gần đây tôi đã nhìn vào redis và nó có rất nhiều tính năng mạnh mẽ mà nếu không sẽ mất một vài dòng trong Django (python) để làm. Redis dữ liệu là dai dẳng miễn là máy nó chạy trên không đi xuống và bạn có thể cấu hình nó để ghi ra các dữ liệu nó lưu trữ vào đĩa mỗi 1000 phím hoặc mỗi 5 phút hoặc lâu hơn tùy thuộc vào sự lựa chọn của bạn.Redis có thể ghi vào cơ sở dữ liệu như PostgreSQL không?

Redis sẽ tạo bộ nhớ cache tuyệt vời và chắc chắn sẽ thay thế rất nhiều chức năng tôi đã viết bằng python (bỏ phiếu cho bài đăng của người dùng, xem danh sách bạn bè của họ, v.v ...). Nhưng mối quan tâm của tôi là, tất cả các dữ liệu này sẽ có một số cách cần phải được dịch sang postgres. Tôi không tin tưởng lưu trữ dữ liệu này bằng redis. Tôi thấy redis là giải pháp lưu trữ tạm thời để truy xuất nhanh thông tin. Nó cực kỳ nhanh và điều này vượt xa so với các truy vấn lặp đi lặp lại đối với postgres.

Tôi giả sử cách duy nhất tôi có thể viết dữ liệu redis vào cơ sở dữ liệu là lưu() bất cứ điều gì tôi nhận được từ truy vấn 'get' từ redis đến cơ sở dữ liệu postgres thông qua Django.

Đó là giải pháp duy nhất tôi có thể nghĩ đến. Bạn có biết bất kỳ giải pháp nào khác cho vấn đề này không?

+0

Tôi đã tìm thấy câu hỏi tương tự tại đây: http://stackoverflow.com/questions/16234221/web-service-architecture-redis-as-cache-postgresql-for-persistence?rq=1. Tôi tin rằng op là yêu cầu một cái gì đó tương tự, tuy nhiên câu trả lời không phải là những gì tôi đang tìm kiếm. – noahandthewhale

+5

Chúng tôi có một máy chủ web triển khai API và chúng tôi sử dụng Redis làm bộ nhớ cache. Khi một 'POST' với dữ liệu mới xuất hiện, chúng ta lưu trữ dữ liệu trong Redis, và thông báo một tiến trình nền của những dữ liệu mới này, và quá trình đẩy chúng vào cơ sở dữ liệu (MySql) (chúng ta sử dụng danh sách Redis để đẩy dữ liệu vào quá trình). Để đọc dữ liệu, chúng tôi kiểm tra Redis trước và nếu dữ liệu không có ở đó, chúng tôi sẽ lấy chúng từ DB, đặt vào Redis và quay lại máy khách. – akonsu

Trả lời

13

Redis ngày càng được sử dụng như một lớp bộ nhớ đệm, giống như một memcached tinh vi hơn, và rất hữu ích trong vai trò này. Bạn thường sử dụng Redis làm bộ nhớ cache bộ nhớ cache cho dữ liệu bạn muốn bền và ghi lại cho dữ liệu bạn có thể muốn tích luỹ rồi ghi hàng loạt (nơi bạn có thể mất dữ liệu gần đây).

Hệ thống LISTEN vàcủa PostgreSQL rất hữu ích cho việc hủy bỏ bộ nhớ cache chọn lọc, cho phép bạn xóa hồ sơ khỏi Redis khi chúng được cập nhật trong PostgreSQL.

Để kết hợp nó với PostgreSQL, bạn sẽ thấy the Redis foreign data wrapper provider that Andrew Dunstain and Dave Page are working on rất thú vị.

Tôi không biết bất kỳ công cụ nào làm cho Redis trở thành bộ nhớ cache ghi lại minh bạch cho PostgreSQL. Mô hình dữ liệu của họ có lẽ quá khác nhau để điều này hoạt động tốt. Thông thường, bạn viết các thay đổi cho PostgreSQL và vô hiệu hóa các mục trong bộ nhớ cache Redis của họ bằng cách nghe/thông báo cho nhân viên quản lý bộ nhớ cache hoặc bạn thay đổi hàng đợi trong Redis, sau đó yêu cầu ứng dụng đọc chúng và viết chúng vào các khối.

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