sql >> Database >  >> NoSQL >> Redis

Hoe een gesorteerde set objecten in redis op te slaan?

Als u een enkele sleutel gebruikt om al uw hashes op te slaan, is enige serialisatie vereist, aangezien Redis geen geneste gegevensstructuren ondersteunt. Het resultaat zou het volgende zijn:

key: users:pro
         |
         +-----> field       value
                 name:Bruce  "age: 20, score: 100"
                 name:Ed     "age: 22, score: 80"

> HMSET users:pro name:Bruce "age: 20, score: 100" name:Ed "age:22, score:80"

De corresponderende gesorteerde set zou zijn:

key: users:pro.by_scores
         |
         +---> scores:    80           100
         +---> values: "name:Ed"   "name:Bruce"

> ZADD users:pro.by_scores 80 "name:Ed" 100 "name:Bruce"

Opmerking 1 :deze aanpak vereist een unieke ID per gebruiker, momenteel de name eigenschap wordt gebruikt, wat problematisch kan zijn.

Opmerking 2 :om de serialisatie (en deserialisatie) te vermijden, kunt u overwegen een speciale sleutel per gebruiker te gebruiken. Dat betekent doen:

key: users:pro:Bruce
         |
         +-----> field       value
                 age         20
                 score       100

key: users:pro:Ed
         |
         +-----> field       value
                 age         22
                 score       80

> HMSET users:pro:Bruce age 20 score 100
> HMSET users:pro:Ed age 22 score 80

key: users:pro.by_scores
         |
         +---> scores:      80                100
         +---> values: "users:pro:Ed"   "users:pro:Bruce"

> ZADD users:pro.by_scores 80 "users:pro:Ed" 100 "users:pro:Bruce"



  1. Aan de slag met Cloudera Data Platform Operational Database (COD)

  2. Mongodb:$in-operator versus veel enkele zoekopdrachten

  3. Opdrachtwachtrij met redis met BLPOP

  4. hoe te groeperen in mongoDB en alle velden in resultaat te retourneren