如何使用Redis存储分层数据?

16

我有一组要存储的分层数据,层级结构类似于站点/建筑物/楼层,例如:

{ 
   site:'New York',
   buildings: [
              {
                name:'building a',
                floors: [
                       'Ground':[{room:room1},{room:room2}],
                       'First':[{room:room1},{room:room2}]
                        ]
              }
          ] 
},
{ 
   site:'London',
   buildings: [
              {
                name:'building a',
                floors: [
                       'Ground':[{room:room1},{room:room2}],
                       'First':[{room:room1},{room:room2}]
                        ]
              }
          ] 
}

我希望将这些房间数据存储到集合中,但我也可以通过选择站点名称或(站点名称+建筑物名称)或(站点名称+建筑物名称+楼层)来查询子集房间。

1个回答

17

在Redis中,您不会将数据存储在唯一的数据结构中。您必须创建多个数据结构,每个数据结构都通过一个键进行识别。

使用约定来命名您的键:例如site:<CITY>:buildings将是一个集合,其中包含给定站点建筑物ID列表。

然后定义哈希表以存储每个建筑物的描述信息。这些哈希表的键可以是类似于:building:<ID> 的形式。

在哈希表中,您有2个成员:名称和楼层数。楼层数值是包含楼层标识符列表的集合的唯一ID。

然后为每个楼层创建一个最后的集合,以存储房间名称。这些集合的名称可以是类似于:floor:<ID> 的形式。

提示:

  • 使用Redis INCR命令生成唯一ID。
  • 如果您打算存储非常大量的键,则避免使用过长的键(较长的键需要更多的内存)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接