Một trong những điều bạn học được nhanh chóng khi làm việc với redis là bạn phải thiết kế cấu trúc dữ liệu phù hợp với nhu cầu truy cập của bạn, đặc biệt khi nói đến quan hệ (xét cho cùng thì nó không phải là cơ sở dữ liệu quan hệ)
Không có cách nào để tìm kiếm theo "giá trị" với độ phức tạp thời gian O (1) như bạn đã nhận thấy, nhưng có nhiều cách để tiếp cận những gì bạn mô tả bằng cách sử dụng redis. Đây là những gì tôi muốn giới thiệu:
- Lưu trữ dữ liệu người dùng của bạn theo id người dùng (ví dụ:băm) như cách bạn đang làm.
- Có một bộ bổ sung cho mỗi id giảng viên chứa tất cả id người dùng tương ứng với id giảng viên được đề cập.
Điều này có vẻ giống như sao chép dữ liệu của mối quan hệ, vì dữ liệu người dùng của bạn sẽ phải lưu trữ id bài giảng và dữ liệu bài giảng của bạn sẽ lưu trữ id người dùng, nhưng đó là cái giá (nhỏ) phải trả nếu ai đó muốn xây dựng quan hệ trong một -lưu trữ dữ liệu tương quan như redis. Trong điều kiện thực tế, điều này hoạt động tốt; bộ nhớ hiếm khi là nút thắt cổ chai cho các tập dữ liệu nhỏ (nghĩ đến hàng nghìn id).
Để có cái nhìn rõ hơn về cách mọi người sử dụng redis để lập mô hình các ứng dụng có quan hệ, tôi khuyên bạn nên đọc Thiết kế và triển khai một bản sao Twitter đơn giản và mã nguồn của Lamernews, cả hai đều được viết bởi tác giả của redis, Salvatore Sanfilippo.