2017-04-17 123 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或其他高速缓存的产品。