Redis heeft, net als andere NoSQL-datastores, verschillende vereisten op basis van wat u gaat doen.
Redis heeft verschillende gegevensstructuren die nuttig kunnen zijn, afhankelijk van uw behoefte. Bijvoorbeeld, gezien uw wens voor een select * from student where name = 'xxx'
je zou een Redis hash
. kunnen gebruiken .
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"
Als je echter andere vragen hebt, zoals je wilt hetzelfde doen, maar selecteer op where college = 'nnn'
dan zul je je gegevens moeten denormaliseren. Denormalisatie is meestal een slechte zaak in SQL, maar in NoSQL is het heel gewoon.
Als uw primaire zoekopdracht tegen de naam zal zijn, maar u moet mogelijk een zoekopdracht uitvoeren tegen het college, dan kunt u iets doen zoals het toevoegen van een set
naast de hashes.
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"
Als je gegevens op deze manier zijn gestructureerd, zou je, als je alle informatie wilt vinden voor namen die naar de universiteit xn gaan, eerst de set
selecteren en selecteer vervolgens elke hash
gebaseerd op de naam die wordt geretourneerd in de set
.
Uw vereisten bepalen over het algemeen het ontwerp en de structuren die u gebruikt.