
1 warlock 2017-11-27 14:08:53 +08:00 GeoHash |
2 dbfox OP 发现 redis 有这样的功能 命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] 命令描述: 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。 范围可以使用以下其中一个单位: m 表示单位为米。 km 表示单位为千米。 mi 表示单位为英里。 ft 表示单位为英尺。 |
3 blacklee 2017-11-27 14:31:04 +08:00 你有多少用户? |
5 Immortal 2017-11-27 14:37:31 +08:00 以前看过一个早期的文章 年代有点久远 LZ 可以重新测试和评估 https://ruby-china.org/topics/22059 |
6 Immortal 2017-11-27 14:38:21 +08:00 你说的 redis geo 功能 是去年还是什么时候更新才加上的 所以那时候没测试数据 具体多 google |
7 blacklee nbsp;2017-11-27 14:40:30 +08:00 @dbfox 用 Postgres 数据库,简单弄个索引就完事了。 我自己的笔记本,MacBook Pro Late 2013,2 GHz Intel Core i7,8 GB 1600 MHz DDR3 在 Rails console 里执行了两条语句,你可以看到所需时间 [3] pry(main)> PoiBasic.count (20053.1ms) SELECT COUNT(*) FROM "poi_basics" => 56785460 [4] pry(main)> PoiBasic.order("latlng <-> point(30.333, 120.222)").limit(50) PoiBasic Load (23.5ms) SELECT "poi_basics".* FROM "poi_basics" ORDER BY latlng <-> point(30.333, 120.222) LIMIT 50 |
8 owenliang 2017-11-27 14:41:28 +08:00 mongo 是可以的。 |
9 xmadi 2017-11-27 15:04:10 +08:00 via iPhone redis 和 mongodb 自带地理位置查询 |
10 shenhhd 2017-11-27 15:08:37 +08:00 也可以考虑用 Elasticsearch 这个。速度还不错,自带距离。 |
12 freehere 2017-11-27 15:20:44 +08:00 放到百度地图数据库 |
13 killergun 2017-11-27 15:25:56 +08:00 高德地图不是现成的 |
14 luman 2017-11-27 15:29:42 +08:00 可以使用 redis mongo 这些自带地理索引的数据库 也可以用 geohash 自己实现 | /tr>
15 vus520 2017-11-27 15:38:47 +08:00 mongodb, redis, postgres, elasticsearch |
17 billwsy 2017-11-27 16:55:38 +08:00 via iPhone Nearest Neighbor 的那一套方法可以不? |
18 teddy2725 2017-11-27 17:14:32 +08:00 redis es pg |
19 minvacai 2017-11-27 17:22:12 +08:00 MongoDB, MySQL 其实都可以的 |
20 fivesmallq 2017-11-27 17:22:54 +08:00 mongo 性能不太好,推荐 es |
21 xlvecle 2017-11-27 17:27:11 +08:00 经典做法,经纬度用 geohash 编码,建一个 R Tree |
22 QAPTEAWH &nbs;2017-11-27 17:30:22 +08:00 普通 b-tree 肯定慢,储存 geo 数据有专门的数据结构(大致是个二维 b-tree)。 主流数据库肯定提供这种机制,文档里查查 spatial、geo 等词就知道了。 |
23 TangMonk 2017-11-27 17:34:24 +08:00 via Android redis 简单是简单,但是不如 gis 嵌入到数据库里面方便(比如说查询 50km 之类的 20 岁女性),用 postgres 就方便的多了。 |
24 honeycomb 2017-11-27 17:37:00 +08:00 支持 R 树的数据库,或者现成提供包装好 geo 数据支持的 这样的功能连 mysql 都有 |
25 mooncakejs 2017-11-27 17:46:45 +08:00 pg 一波流,全文搜索,地理位置,jsonb 都解决了。 |
26 NUT 2017-11-27 23:55:07 +08:00 via iPhone 数据分片,然后并发查询 最后合并结果 速度在大也不虚 |
27 opengps 2017-11-28 08:41:37 +08:00 以前没有知道这么一堆支持地理算法数据库的时候,我用的是关系型 sql server,采用结果不足放大在查的方法,先算经纬度加减 0.001 范围内,根据结果个数是否满足方法 0.001 ,最多放大 10 次,这样实现的。 |
28 sampeng 2017-11-28 12:15:35 +08:00 elasticsearch,mongodb。专门解决此类问题 |
29 Yang2333 2019-10-15 23:24:24 +08:00 码一下 |
30 Yang2333 2019-10-15 23:24:56 +08:00 楼主...最后怎么做的呢 |