我正在將一個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集地理,所以它會作爲一個指標。 –