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.