自已从零实现的话,没有难度吗?嗯,通过上一节的原理讲解,目前为止,看起来确实很简单。但,如果自已从零实现的话,对于IM这种高性能、高并发场景来说,确实有一点难度,难不在移动客户端,而是在服务端。技术难点主要包括:1)如何高效地进行两点距离的计算,对于高并发服务端来说,像上一节中的代码那样,一个一个计算,还是有点不高效;2)如何高效地进行地理围栏的圈定(难道是把所有当前在线的用户,离我的距离都一一算一遍,然后按距离进行筛选?那性能岂不是噩梦?)。那,有救吗?答案是有!继续看下一节。5、Redis里的GEO地理位置相关指令,就能很好的上述问题针对“附近的人”这一位置服务领域的应用场景,服务端高性能场景下,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有较高的运行效率。要提供完整的“附近的人”这样的功能或服务,较基本的是要实现“增”、“删”、“查”的功能。本文余下的文字,以下将分别进行介绍,其中会重点对查询功能进行解析。并将从Redis源码角度对其算法原理进行解析,并推算查询时间复杂度。Redis相关资源:1)Redis官网)Redis的GEO指令说明(英文)