2017-04-17 122 views
1

ID是唯一的,我將它用作密鑰,其餘部分用作Redis數據庫中的哈希值。我正在尋找一個查詢,返回我的ID列表,如果我給出一個特定的城市名稱。例如,如果我問,給我的名字命名SPRINGFIELD市所有的ID,它應該返回我01103和01104.Redis從值中獲取密鑰

{ "_id" : "01103", "city" : "SPRINGFIELD", "loc" : [ -72.588735, 42.1029 ], "pop" : 2323, "state" : "MA" } 

{ "_id" : "01104", "city" : "SPRINGFIELD", "loc" : [ -72.577769, 42.128848 ], "pop" : 22115, "state" : "MA" } 

{ "_id" : "01106", "city" : "LONGMEADOW", "loc" : [ -72.5676, 42.050658 ], "pop" : 15688, "state" : "MA" } 
+0

我的回答有幫助嗎?如果是的話,你可以接受它,或者如果你仍然困惑,我可以提供更多的深度 –

回答

2

你不指定要使用Redis的什麼鍵映射到哈希結構的城市,所以我會假設你使用ID,因爲你已經說過它是唯一的。

要查詢匹配特定名稱的城市,您需要構建和維護支持查詢的輔助索引結構。有一種方法可以使用SET數據結構,並使用城市名稱作爲指向共享該城市名稱的一組id的關鍵字。

2

Redis不支持查詢開箱即用的數據。它基本上是一個簡單的鍵值存儲,其中的值是數據結構,如列表,哈希表e.t.c.

解決方法是創建一個單獨的ID列表或散列表,並將其存儲在Redis中。您需要維護添加或刪除的所有新ID的列表。

如果查詢是最重要的,然後它可能是更好地爲您轉而支持querying your data一個distributed cacheNCache或其他高速緩存的產品。