Redis har, ligesom andre NoSQL-datalagre, forskellige krav baseret på, hvad du skal lave.
Redis har flere datastrukturer, der kan være nyttige afhængigt af dit behov. For eksempel givet dit ønske om en select * from student where name = 'xxx'
du kan bruge en 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"
Hvis du dog har andre forespørgsler, vil du gerne gøre det samme, men vælg where college = 'nnn'
så bliver du nødt til at denormalisere dine data. Denormalisering er normalt en dårlig ting i SQL, men i NoSQL er det meget almindeligt.
Hvis din primære forespørgsel vil være mod navnet, men du skal muligvis forespørge mod kollegiet, så kan du gøre noget som at tilføje et set
ud over hasherne.
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"
Med dine data struktureret på denne måde, hvis du ville finde alle oplysninger om navne, der går på college xn, ville du først vælge set
, og vælg derefter hver hash
baseret på navnet returneret i set
.
Dine krav vil generelt styre designet og de strukturer, du bruger.