我正在将一个Node/Express应用程序的后端从MongoDB重构到Redis。我的数据目前由几十个(〜70)文档组成,每个文档由NAME,缩写ABBR,GeoJSON位置和整数参数数组组成。每个文档的PARAMETER每隔几分钟更新一次,但其余属性保持不变。 PARAMETER属性的长度可能会有所不同(也可能为空)。我想对数据执行很多查询以检查给定点的最近位置,并显示名称,缩写和参数。Redis中的复杂数据结构
一个例子文件:
{
_id: ObjectId("1"),
name: 'A place',
abbr: 'PLC',
location: { type: "Point", coordinates: [ -130.922, 33.289 ]},
parameters: [3 4 28],
}
我熟悉的Redis的GEOADD命令,但我不明白如何使用它来创建更复杂的数据结构给握住我的数据,如果我使用GEOADD命令来指定一个位置,然后尝试使用HMSET为名称和缩写添加字段,我会得到一个WRONGTYPE错误。
我很欣赏的错误,因为我看重引用透明和我喜欢的类型时,都认真对待。但我也认为我可能从根本上误解了Redis如何存储数据。当我最初开始学习Redis的概念后重构,我设想能够存储我的数据的形式类似
1 name 'A Place' abbr 'PLC' location -130.922 33.289 parameters 3 4 28
或者,如果没有那么,一种能够方便地查询的位置贴近我的组沿与其他属性。
实用的方法是将存储位置为“-130.922,33.289”哈希值的字符串,而ID添加到与GEOADD集地理,所以它会作为一个指标。 –