2014-04-28 18 views
5

Tôi khá mới đối với Redis và tôi thích nó cho đến nay. Tôi đã có một ý tưởng về việc thực hiện một đồ thị trong Redis, nhìn nó lên, và chắc chắn đủ, nó đã được thực hiện trước đây, nhưng tôi có một vài câu hỏi về nó.Khái niệm hóa biểu đồ Redis?

Twitter sử dụng FlockDB với Redis (source) liên khóa và giá trị của họ với tweets, theo dõi, v.v. Pinterest sử dụng danh sách Redis cho mỗi người dùng (tín đồ của họ, chân, vv) để tải các dữ liệu yêu cầu (source) bằng cách đi qua danh sách và grabbing các phím được yêu cầu.

Tôi rất quan tâm đến việc sử dụng Redis theo cách của Pinterest. Tôi đã tìm thấy mã giải thích here.

Dưới đây là những gì tôi không thể tìm ra:

Tất cả các dữ liệu này (danh sách đi theo, danh sách pin, vv) cần phải được lưu trữ trong một cơ sở dữ liệu thứ hai có thể tồn tại dữ liệu. Nó sẽ không mất rất nhiều công việc/bảo trì để liên tục giữ dữ liệu danh sách Redis và dữ liệu của cơ sở dữ liệu khác trong đồng bộ? Có cách nào làm dễ hơn không?

Sẽ không sử dụng danh sách Redis cho mọi người dùng như Pinterest, có bộ nhớ rất chuyên sâu so với giải pháp như FlockDB không?

Tôi xin lỗi nếu tôi hiểu sai bất kỳ thông tin nguồn nào. Sẽ rất hữu ích nếu ai đó chia sẻ một số thông tin chi tiết về khái niệm này. Cảm ơn trước.

PS: Các mối quan hệ và nguồn cấp dữ liệu ứng dụng của tôi là mạng xã hội-esque. Không hoàn toàn khác với Twitter/Pinterest nói trên.

Cập nhật:

Tôi không chắc chắn câu hỏi này bao giờ sẽ được trả lời, nhưng tôi sẽ cập nhật nó với thông tin tôi đã học được. Tôi đã cấu hình một cụm Cassandra viết tất cả các đối tượng vật lý trong các bảng và Redis cluster để lưu trữ các danh sách được quản lý cao (các mối quan hệ dữ liệu) mà nếu không sẽ là bảng nối của riêng chúng trong SQL hoặc CQL (nhiều bảng quan hệ như conversation_users). Cassandra không hoạt động tốt với các chỉ số phụ và không thể tra cứu nhiều giá trị được đánh chỉ mục phụ trong một truy vấn, vì vậy với tập Redis, tôi có thể đưa Cassandra một danh sách các ID chính cần thiết. Cassandra được sử dụng tốt nhất như một công cụ đọc> viết, vì vậy Redis lấy một tải trọng lớn của Cassandra bằng cách cho nó các ID chính cần thiết, gần như loại bỏ nhiều truy vấn cho một tập hợp thông tin đơn lẻ, C (Một lần nữa với các chỉ số phụ) Hãy suy nghĩ về hiệu suất quét toàn bộ bảng cho các giá trị so với việc lấy một khóa đơn giản và các giá trị đã đặt của nó. D. (bảo trì) Có thể, và tôi đang trong quá trình xây dựng các kịch bản nền mà sắp xếp lại Redis gần hết hạn sử dụng từ thấp đến mức đặt vào cột Cassandra (một lần nữa sử dụng Redis cho sức mạnh của nó: bộ nhớ và Cassandra cho sức mạnh của nó: đăng nhập), sau đó viết những tập hợp serialized này trở lại Redis khi chúng được yêu cầu (sau khi hết hạn).

Tôi vẫn muốn biết thông tin nào cần lưu vào bộ nhớ cache trong Redis và những gì cần lưu giữ trong Cassandra. Tôi không thể gắn bó tất cả các mối quan hệ dữ liệu trong Redis (mặc dù tôi muốn) vì biểu đồ xã hội tiềm năng của tôi đã rất lớn. Ví dụ, tôi có nên giữ các đối tượng đọc/ghi gần đây thực sự trong Redis cùng với các nguồn cấp dữ liệu với các ID đối tượng đó không? Điều này sẽ mất rất nhiều RAM, nhưng nó làm giảm đọc từ Cassandra cho các đối tượng mới hơn. Hoặc tôi có nên giữ hầu hết các mối quan hệ trong Redis (người theo dõi, theo dõi nguồn cấp dữ liệu, những người bị chặn, những bài đăng thích, v.v.) không?Tôi thích tuyến thứ hai tốt hơn, nhưng nó có nghĩa là truy vấn nhiều hơn Cassandra cho các đối tượng thực tế, mà tôi muốn loại bỏ mà không phải trả một triệu đô la một tháng trong RAM. Tôi nên chọn đối tượng/mối quan hệ nào trong Redis? Tôi học tốt từ các ví dụ mã, vì vậy nếu bạn tình cờ tìm thấy bất kỳ điều gì tương tự, tôi sẽ đánh giá cao. Xin vui lòng cho tôi những suy nghĩ của bạn, nếu bạn có bất kỳ ý tưởng! Cảm ơn bạn.

Trả lời

0

Tất cả dữ liệu này (danh sách theo dõi, danh sách ghim, v.v ...) cần được lưu trữ trong cơ sở dữ liệu thứ hai có thể lưu dữ liệu. Sẽ không mất nhiều công việc làm việc/bảo trì để giữ liên tục giữ dữ liệu danh sách của Redis và dữ liệu khác của cơ sở dữ liệu đồng bộ hóa? Có cách nào làm dễ hơn không?

Redis có tính kiên trì tích hợp, vì vậy bạn không cần DB thứ hai để lưu dữ liệu. Cách dễ nhất là sử dụng Redis Persistence

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