Redis, giống như các kho dữ liệu NoSQL khác, có các yêu cầu khác nhau dựa trên những gì bạn sẽ làm.
Redis có một số cấu trúc dữ liệu có thể hữu ích tùy thuộc vào nhu cầu của bạn. Ví dụ:với mong muốn của bạn về select * from student where name = 'xxx'
bạn có thể sử dụng hash
của Redis .
redis 127.0.0.1:6379> hmset student:xxx id 1 college nnn address xn
OK
redis 127.0.0.1:6379> hgetall student:xxx
1) "id"
2) "1"
3) "college"
4) "nnn"
5) "address"
6) "xn"
Tuy nhiên, nếu bạn có các truy vấn khác, chẳng hạn như bạn muốn làm điều tương tự nhưng hãy chọn trên where college = 'nnn'
thì bạn sẽ phải chuẩn hóa dữ liệu của mình. Bất chuẩn hóa thường là một điều tồi tệ trong SQL, nhưng trong NoSQL thì điều đó rất phổ biến.
Nếu truy vấn chính của bạn chống lại tên, nhưng bạn có thể cần truy vấn ngược lại trường đại học, thì bạn có thể làm điều gì đó như thêm set
ngoài các hàm băm.
redis 127.0.0.1:6379> sadd college:nnn student:xxx
(integer) 1
redis 127.0.0.1:6379> smembers college:nnn
1) "student:xxx"
Với dữ liệu của bạn được cấu trúc như thế này, nếu bạn muốn tìm tất cả thông tin về tên của trường đại học xn, trước tiên bạn phải chọn set
, sau đó chọn từng hash
dựa trên tên được trả lại trong set
.
Yêu cầu của bạn nói chung sẽ thúc đẩy thiết kế và cấu trúc bạn sử dụng.