# NearPeople **Repository Path**: golang520/NearPeople ## Basic Information - **Project Name**: NearPeople - **Description**: 附近人功能实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-07-18 - **Last Updated**: 2023-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## golang+redis+mysql 实现附近租车网点 ### 首先该功能类似附近车辆,或者附近人之类的需求可以使用,网上查了一大圈也没看到有golang实现的这个功能,所以自己亲自写了一个。 ### 第一步:首先要在服务器或者本地,安装好mysql和redis。 ### 第二步:需要有一批带经纬度的数据,导入到mysql中,这里就不提供了,大家自己采集一下。 ### 第三步:就是开始要构思逻辑,在构思逻辑之前,请先看下面这张图,(**该图还不是很完美**) ![输入图片说明](https://images.gitee.com/uploads/images/2020/0814/095253_06a131ad_1327207.png "WechatIMG24.png") ### 第四步:客户端进来,首先获取全部网点接口,那么这里直接去查询redis,将数据返回给前端,那么如果redis没有就去查询mysql,然后将数据返回给前端,注意,此时要将查询的数据同步到redis里面,提升以后查询的速度,代码如下! ![输入图片说明](https://images.gitee.com/uploads/images/2020/0814/095353_952775e9_1327207.png "WechatIMG26.png") ### 第五步:开始附近人的功能,redis有提供对应的特殊命令可以处理指定半径内的所有数据,那么这也就是类似地理围栏的形式,那么他redis也有提供特殊命令,geoadd 和 geoRadius 我们看下图示例! ![输入图片说明](https://images.gitee.com/uploads/images/2020/0814/095520_e0ad1c59_1327207.png "WechatIMG27.png") **上面这个图的这个geoadd命令是表示先将数据的维度经度,插入到redis中。** ### 第六步:那么当用户选择了附近租车网点,此时就要调用 geoRadius这个命令了!请看示例 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0814/095638_8dc58c1a_1327207.png "WechatIMG28.png") **那么图中这个geoRadius命令是用来计算附近有多少用户,当然还有很多参数。后面会贴上demo地址** ### 第七步: 那么系统平台每次新增一个租车网点进来,此时我们就要先将获取全部网点的redis-key1清空,同时还要将新增的这个租车网点的经纬度插入到redis-key2中,也就是用命令geoAdd。(**切记**) ### 第八步:如果说为了考虑redis的持久问题的话,那么我们如果说服务器宕机了,那么我们在程序入口main函数的地方·其实也可以采用go协程将所有的租车网点,同步到redis-key2中,还是用命令 geoAdd(**这一步,其实并不是至关重要,看自己的取舍吧**) ## 最后大家如果还有什么不懂得话,可以《扫码》进群问我,我会一一解答,欢迎一起进来学习讨论golang ![输入图片说明](https://images.gitee.com/uploads/images/2021/0316/112309_3bda1fa6_1327207.jpeg "WechatIMG13.jpeg")