我想知道如何在Redis中存储对象列表。那就是我有这样的钥匙。
users:pro
{
name: "Bruce", age: "20", score: 100,
name: "Ed", age: "22", score: 80
}
我想要将哈希列表存储为特定键的值。我想使用score
字段作为排序集中的分数字段。我怎么能做到这一点?
我已经看过为一个键编写一个单独的哈希值,但是如果我想要多个哈希值并且其中一个哈希字段必须作为已排序集的分数字段呢?
答案 0 :(得分:4)
使用单个键存储所有哈希值需要一些序列化,因为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"