Redis, подобно на други NoSQL хранилища за данни, има различни изисквания в зависимост от това, което ще правите.
Redis има няколко структури от данни, които могат да бъдат полезни в зависимост от вашите нужди. Например, като се има предвид вашето желание за select * from student where name = 'xxx'
можете да използвате Redis hash
.
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"
Ако обаче имате други запитвания, например искате да направите същото, но изберете where college = 'nnn'
тогава ще трябва да денормализирате данните си. Денормализирането обикновено е лошо нещо в SQL, но в NoSQL е много често.
Ако основната ви заявка ще бъде срещу името, но може да се наложи да направите заявка срещу колежа, тогава може да направите нещо като добавяне на set
в допълнение към хешовете.
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"
С данните ви структурирани по този начин, ако искате да намерите цялата информация за имената, които отиват в колежа xn, първо ще изберете set
, след което изберете всеки hash
въз основа на името, върнато в set
.
Вашите изисквания по принцип ще управляват дизайна и структурите, които използвате.