Redis là khái niệm khác với cơ sở dữ liệu SQL truyền thống mà tôi sử dụng và tôi đang cố gắng tìm hiểu xem nó có phù hợp với dự án của tôi không ... một câu trả lời cho câu hỏi của tôi.Redis và giá trị truy vấn
Tôi có một nhóm Người dùng mà tôi cần lưu trữ, mỗi người dùng có một ID duy nhất và một vài giá trị (chẳng hạn như tên của họ) được liên kết với nó. Nó có vẻ như tôi chỉ đơn giản có thể lưu trữ những người như một hash:
user:fef982dcfe1a7bcba4849b4c281bba95
"username" "andrewm" "name" "Andrew"
Tôi cũng có một loạt các thông điệp tôi muốn để lưu trữ, từng có một vài thuộc tính như người gửi và người nhận:
message:1a7bcba4849b4c281bfef98a952dcfeb
"sender" "fef982dcfe1a7bcba4849b4c281bba95" "recipient" "82dcfe1a7bcba4849b4c281bba95fef9" "message" "Hi!"
Câu hỏi của tôi là, làm thế nào tôi sẽ đi về lấy tất cả các tin nhắn được gửi bởi một người dùng cụ thể (được chỉ định bởi một hash của họ). Tôi có nên sử dụng một cơ sở dữ liệu quan hệ truyền thống thay thế, hoặc thậm chí một cơ sở dữ liệu NoSQL như MongoDB (mà tôi đã sử dụng trước đây)? Nếu vậy, có ai có bất cứ đề nghị nào cho các cửa hàng hiệu suất cao không? Tôi sẽ không thực hiện bất kỳ tìm kiếm thực sự nào (ví dụ: các truy vấn MySQL LIKE
) - thực sự chỉ là tra cứu giá trị chính.
Cảm ơn bạn rất nhiều vì lời giải thích đó-- nó rất hữu ích. Tôi sẽ xem xét kỹ hơn :) –
Xin chào, cảm ơn, rất hữu ích. Nếu "Thêm/xóa một tin nhắn có nghĩa là duy trì các tập tin *: đã gửi và *: đã nhận", liệu nó có cần nhiều không gian hơn để lưu trữ dữ liệu và do đó chiếm nhiều không gian hơn trong bộ nhớ? Nó có thể là một vấn đề cho hiệu suất nếu loại "đa cửa hàng" được thực hiện thường xuyên? Cảm ơn sự giúp đỡ của bạn – Loic
Có, nó đại diện cho nhiều dữ liệu hơn để lưu trữ. Về hiệu suất, bạn có nghĩa vụ phải sử dụng pipelining để khấu hao tác động của việc thực hiện một số lệnh cho một hoạt động nhất định. Xem http://redis.io/topics/pipelining –