Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie speichere ich sortierte Objektsätze in Redis?

Die Verwendung eines einzigen Schlüssels zum Speichern all Ihrer Hashes erfordert eine gewisse Serialisierung, da Redis keine verschachtelten Datenstrukturen unterstützt. Das Ergebnis wäre folgendes:

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"

Der entsprechende sortierte Satz wäre:

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

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

Anmerkung 1 :Dieser Ansatz erfordert eine eindeutige ID pro Benutzer, derzeit der name -Eigenschaft verwendet, was problematisch sein könnte.

Anmerkung 2 :Um die Serialisierung (und Deserialisierung) zu vermeiden, können Sie die Verwendung eines dedizierten Schlüssels pro Benutzer in Betracht ziehen. Das bedeutet:

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"