Redis
 sql >> Database >  >> NoSQL >> Redis

Progettare una tabella di database Redis come SQL?

Redis, come altri datastore NoSQL, ha requisiti diversi in base a ciò che farai.

Redis ha diverse strutture di dati che potrebbero essere utili a seconda delle tue esigenze. Ad esempio, dato il tuo desiderio per un select * from student where name = 'xxx' potresti usare un hash 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"

Se invece hai altre domande, come se volessi fare la stessa cosa ma seleziona su where college = 'nnn' quindi dovrai denormalizzare i tuoi dati. La denormalizzazione di solito è una cosa negativa in SQL, ma in NoSQL è molto comune.

Se la tua query principale sarà contro il nome, ma potresti dover interrogare il college, potresti fare qualcosa come aggiungere un set oltre agli hash.

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"

Con i tuoi dati strutturati in questo modo, se volessi trovare tutte le informazioni per i nomi che vanno al college xn, dovresti prima selezionare il set , quindi seleziona ogni hash in base al nome restituito nel set .

Le tue esigenze generalmente guideranno il design e le strutture che utilizzi.