我有一组要存储的分层数据,层次结构就像site / building / floor,数据,例如
{
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}]
]
}
]
}
我想将这些房间数据存储到一个集合中,但我也可以通过选择网站名称或(网站名称+建筑物名称)或(网站名称+建筑物名称+楼层)来查询房间的子集
答案 0 :(得分:8)
在Redis中,您不会将数据存储在唯一的数据结构中。您必须创建多个数据结构,每个数据结构都由一个密钥标识。
使用约定来命名您的密钥:例如site:<CITY>:buildings
将是一个包含给定网站的建筑ID列表的集合。
然后定义哈希以存储每个建筑物描述。这些哈希的关键可能是:building:<ID>
在哈希中你有2个成员:名字和楼层。 Floors值是包含楼层标识符列表的集合的唯一ID。
然后为每个楼层创建最后一组,以存储房间名称。集合的名称可能类似于:floor:<ID>
。
提示: