如何使用 redis 存储分层数据



我有一组分层数据要存储,层次结构就像站点/建筑物/楼层,例如数据

{ 
   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}]
                        ]
              }
          ] 
}
我想将这些房间

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

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

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

然后定义哈希来存储每个建筑物描述。这些哈希的键可能是这样的:building:<ID>

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

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

技巧:

  • 使用 redis INCR 命令生成唯一 ID。
  • 如果您打算存储大量密钥,请避免太长(较长的密钥需要更多内存)

最新更新