Redis中的复杂数据结构



我正在从mongodb到redis重构节点/express应用的后端。

我的数据当前由几十个(〜70)个文档组成,每个文档由名称组成,缩写ABBR,geojson位置和整数参数。每个文档的参数每隔几分钟进行一次更新,但其余属性仍然固定。参数属性的长度可能会有所不同(并且也可以为空)。我想对数据进行许多查询,以检查最近的位置到给定点,并显示名称,缩写和参数。

示例文档:

{ 
  _id: ObjectId("1"), 
  name: 'A place', 
  abbr: 'PLC', 
  location: { type: "Point", coordinates: [ -130.922, 33.289 ]},
  parameters: [3 4 28],
 }

我熟悉redis中的geoadd命令,但是我看不到如何使用它来创建更复杂的数据结构以保存我的数据,如果我使用geoadd命令来指定位置,然后尝试尝试使用HMSET添加字段以进行姓名和缩写,我获得了一个错误类型错误。

我感谢这个错误,因为我重视参考透明度,并且喜欢当认真对待类型时。但是我也认为我可能从根本上误解了Redis如何存储数据。当我最初从概念上了解Redis后开始重构时,我设想能够以

之类的形式存储我的数据
1 name 'A Place' abbr 'PLC' location -130.922 33.289 parameters 3 4 28

或如果不是这样,这是一种轻松查询我集合中位置的近距离的方法,以及其他属性。

redis核心数据结构无法嵌套。在您的示例中,您应该为每个级别使用不同的键(和数据结构),例如属性的哈希,位置的地理位,也许是参数的另一个哈希。

一旦您将查询组成,您的查询应包括三个读数以构成最终答案。

最新更新