点 速度的未来即将来到你所在城市的活动。

加入我们的 Redis 产品发布会

对象->哈希存储

返回术语表

乍一看,本机 Redis 数据类型哈希 (映射) 似乎与 JSON 对象或其他记录数据类型非常相似。它实际上要简单得多,只允许每个字段为字符串或数字,而不允许子字段。然而,通过预先计算每个字段的“路径”,你可以展开一个对象并将其存储在 Redis 哈希表中。

以以下示例为例

{
    "colour":"blue",
    "make":"saab",
    "model":{
       "trim" : "aero",
       "name" : 93
    },
    "features":[ "powerlocks", "moonroof" ]
}

使用 JSONPath ,我们可以用哈希表在一级表示每个项目。

> HSET car3 colour blue
> HSET car3 make saab
> HSET car3 model.trim aero
> HSET car3 model.name 93
> HSET car3 features[0] powerlocks
> HSET car3 features[1] moonroof

(显示为用于清晰度显示的单个命令,在脚本中你将希望可变使用 HSET)

这提供了一种获取整个对象的方法

> HGETALL car3
 1) "colour"
 2) "blue"
 3) "make"
 4) "saab"
 5) "model.trim"
 6) "aero"
 7) "model.name"
 8) "93"
 9) "features[0]"
10) "powerlocks"
11) "features[1]"
12) "moonroof"

或者对象的单独部分

> HGET car3 model.trim
"aero"

虽然这可以提供一个快速有用的方法来访问 Redis 中的存储对象,但它确实有缺点

这种模式与 ReJSON 有很大的重叠部分。如果可以使用 ReJSON,它通常是更好的选择。这样存储对象具有一项 ReJSON 所没有的优势,即与其他 Redis 命令集成:SORT。但是,SORT 命令既复杂(超出此模式的范围),又计算复杂,可能以无法很好地扩展的方式应用,除非管理得很小心。