Redisはネストされたデータ構造をサポートしていないため、単一のキーを使用してすべてのハッシュを格納するには、シリアル化が必要になります。結果は次のようになります。
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"
対応するソート済みセットは次のようになります:
key: users:pro.by_scores
|
+---> scores: 80 100
+---> values: "name:Ed" "name:Bruce"
> ZADD users:pro.by_scores 80 "name:Ed" 100 "name:Bruce"
注1 :このアプローチでは、ユーザーごとに一意のID、現在はname
が義務付けられています 問題が発生する可能性のあるプロパティが使用されています。
注2 :シリアル化(および逆シリアル化)を回避するために、ユーザーごとに専用のキーを使用することを検討できます。つまり、次のことを意味します:
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"