Tại sao nên sử dụng Redis để lưu user profiles, friend lists trong Social media
Tại sao nên sử dụng Redis để lưu user profiles, friend lists trong Social media
Em đọc trên mạng thì thấy họ có đưa ra use case như vậy.
Đây là một vài lý do em đang hiểu.
Chắc chắn nhắc đến Redis thì người ta nghĩ ngay đến xử lý nhanh rồi, tăng tính trải nghiệm của user.
Bởi vì thông tin của user ví dụ như mail, sdt, name, danh sách bạn bè ít bị thay đổi, và có thể lấy ra thường xuyên, (ví dụ như ở page nào hay làm hành động gì cũng cần những thông tin user, nên đây cũng là lý do chính).
Em thì đang hiểu như vậy, mong các Anh/Chị trong nhóm cho em thêm một vài góc nhìn mới với ạ.
1 CÂU TRẢ LỜI
Redis thường được dùng cho Caching chứ không phải lưu trữ. Mặc dù Redis cũng hỗ trợ snapshot để lưu và tải lại, nhưng cơ bản nó không phải dùng cho việc "lưu trữ dài hạn". Redis là csdl thứ cấp, không phải sơ cấp. Như vậy, thực ra dữ liệu về user vẫn được lưu trong csdl nào đó, sau đó được tải lên Redis để tối ưu cho việc truy xuất. Có thể giải thích việc lựa chọn Redis cho việc lưu profile (ngoài việc Redis nhanh ra):
- Profile là dữ liệu dạng Key - Value với Key là userId => Phù hợp lưu trong Redis (Key-Value database).
- Profile có kích thước nhỏ nhưng số lượng lớn. Hash của Redis phù hợp để lưu dạng này.
Bên cạnh đấy thì Redis cũng không đáp ứng được các yêu cầu:
- Xây dựng bộ lọc. Redis là Key Value DB nên query language rất hạn chế.
- Searching. Redis là Key Value DB nên query language rất hạn chế.
- Full-text search.
Điều đó có nghĩa là chúng ta sẽ lưu profile user ở nhiều dạng DB khác nhau, đáp ứng cho những yêu cầu riêng biệt. VD:
- Relation DB cho persistency.
- Redis cho việc truy xuất nhanh liên tục.
- Elasticsearch cho việc searching + filtering.
- Output cache - cache luôn render result của phần profile.
Redis chỉ là 1 trong số những db được sử dụng.
bai viet rat tuyet