sql >> Databasteknik >  >> NoSQL >> Redis

Designa Redis databastabell som SQL?

Redis, liksom andra NoSQL-databutiker, har olika krav baserat på vad du ska göra.

Redis har flera datastrukturer som kan vara användbara beroende på ditt behov. Till exempel med tanke på din önskan om en select * from student where name = 'xxx' du kan använda 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"

Om du dock har andra frågor, vill du göra samma sak men välj where college = 'nnn' då måste du avnormalisera dina data. Denormalisering är vanligtvis en dålig sak i SQL, men i NoSQL är det väldigt vanligt.

Om din primära fråga kommer att vara mot namnet, men du kan behöva fråga mot kollegiet, kan du göra något som att lägga till en set förutom hasharna.

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 din data strukturerad så här, om du vill hitta all information för namn som går på college xn, skulle du först välja set , välj sedan varje hash baserat på namnet som returneras i set .

Dina krav kommer i allmänhet att styra designen och de strukturer du använder.



  1. Vad är fördelen med Redis-klustring på olika värdar?

  2. Redis kommer inte att hämta data från cachen

  3. MongoDB $project:Behåll tidigare pipelinefält

  4. Vilka är de underliggande skillnaderna mellan select, epoll, kqueue och evport?