首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Redis和地理邻近搜索来查找同一位置的两个用户?

如何使用Redis和地理邻近搜索来查找同一位置的两个用户?
EN

Stack Overflow用户
提问于 2013-10-01 11:47:34
回答 7查看 19.7K关注 0票数 23

我想实现一个服务,在给定用户的地理坐标的情况下,可以实时检测两个用户是否处于非常相同的位置。

为了实现实时和可伸缩性,我似乎应该使用分布式内存中的数据存储,比如Redis。我使用geohashing进行了研究,但问题是彼此接近的点可能并不总是共享相同的散列前缀。而地理散列可能是过度杀伤力,因为我感兴趣的是找出两个用户是否足够接近他们站在一起的地方。

当然,简单的解决方案就是测试成对的地理坐标是否落在彼此之间的小距离内。但是AFAIK,Redis和其他内存中的数据存储没有支持这种查找的地理空间索引。

实现这一点的最佳方式是什么?

EN

回答 7

Stack Overflow用户

发布于 2014-04-10 09:57:00

此功能已嵌入到Redis 3.2+中。

但对于较旧的版本,这个问题仍然存在。我采纳了尹启文的回答,为Node创建了一个模块,您可以通过检查代码来了解它是如何使用Redis的。他的指导非常完美,我能够按照他的指示去做,取得了很好的效果。https://github.com/arjunmehta/node-georedis

本机命令基本上使用相同的算法。

它非常快,并且避免了任何类型的交集/半正弦类型的操作。关于尹启文的方法,最酷的事情(我认为)是,算法中计算最密集的部分可以分发给客户端(而不是全部发生在数据库或服务器上)。

它不是100%精确的,并且使用预先配置的距离步长,但对于大多数应用程序,我想你不需要精确的精度。

我还解释了尹启文在GIS stack exchange上的文章。

很抱歉有这么多的联系。:P

票数 17
EN

Stack Overflow用户

发布于 2014-02-27 21:51:39

通常,这可以通过GeoHash和Redis的排序集来完成。在讨论如何在redis上实现空间索引服务之前,我写了一个设计。

https://github.com/yinqiwen/ardb/wiki/Spatial-Index

票数 15
EN

Stack Overflow用户

发布于 2014-07-22 08:03:04

也许你可以试试这个:

Redis Geography Edition

如果你真的想试一试,它的效果非常棒。:)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19107614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档