基于Redis实现查找附近的人
之前分享过一篇《使用geohash实现查找附近的人》,其实redis在3.2版本之后也提供了地理位置的能力。
geoadd命令
该命令是添加地理位置信息,基本格式是:
基于Redis实现查找附近的人
key:键名
longitude:经度
latitude:纬度
member:该位置名字
举个例子,我现在要添加福州的软件园的地理位置。
首先我通过某歌地图搜索到软件园,右键地点,点击“这儿有什么”,就会弹出经纬度小卡片,如图:
基于Redis实现查找附近的人
redis中执行,如图:
基于Redis实现查找附近的人
要注意的是,某歌地图搜出来的坐标,纬度在前,经度在后,而redis命令是相反的。
如果要一次添加多个位置,直接在后面追加经纬度和member即可。
geodist命令
该命令是计算两个位置的距离,为了演示效果,我再添加一个位置
基于Redis实现查找附近的人
计算两点之间的距离:
基于Redis实现查找附近的人
默认单位是米,同时也支持其他单位:
m:米
km:公里
mi:英里
ft:英尺
直接将单位加在命令后面即可,如图:
基于Redis实现查找附近的人
georadius命令
该命令是找出指定坐标点一定距离内的位置,基本格式是:
基于Redis实现查找附近的人
这条命令比较长,后半部分用“[]”包裹的参数都是可选参数,非必填,可以先不看。
例如,找出“119.270673 26.114479” 附近1km和400m内的点:
基于Redis实现查找附近的人
后面可选参数主要是针对查询结果做一些处理:
WITHCOORD:返回目标位置的经纬度
WITHDIST:返回与目标位置之间具体距离
ASC|DESC:按距离排序,ASC是从近到远,DESC相反
WITHHASH:返回目标位置的hash值
COUNT count: 指定返回数量
这些参数不一一演示,仅举其中三个例子:
基于Redis实现查找附近的人
看到这里,相信你已经可以使用redis实现“查到附近的人”了。
georadiusbymember命令
该命令同样是找出距离指定位置n米距离内的点位,与georadius的区别是:georadius是指定坐标点来搜索,而georadiusbymember是指定member来搜索,如:
基于Redis实现查找附近的人
其他参数都一样
geohash命令
该命令是计算某位置的hash值,基本格式如下:
基于Redis实现查找附近的人
例如:
基于Redis实现查找附近的人
所谓的hash值,其实就是一个字符串,它的计算方法就是我之前那篇《使用geohash实现查找附近的人》提到的算法,有兴趣的可以翻一翻那篇文章。
geopos命令
获取指定位置的坐标:
基于Redis实现查找附近的人
基于Redis实现查找附近的人相关推荐
- redis 经纬度_原来用Redis实现查找附近的人这么容易
1. 前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点.明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了.赶紧去查相关的技术选型.经过一番折腾,终于在晚上十点完成了这个需求. ...
- 原来用Redis实现查找附近的人这么容易
1. 前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点.明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了.赶紧去查相关的技术选型.经过一番折腾,终于在晚上十点完成了这个需求. ...
- Java基于Redis实现“附近的人”(含源码下载)
"附近的人"在社交类APP已成为标配的功能,Low一点的实现方式可以把坐标存至关系型数据库,通过计算的坐标点距离实现,这种计算可行但计算速度远不及内存操作级别的NoSql数据库. ...
- 大神级教程!300分钟撸一个基于Redis 6.0 版本的高并发架构
刚好原先公司搞职位调整,我不太满意,赶上这波金三银四的面试浪潮,干了也有5年的后端开发了,不是大神也是有实战经验的,我就自信满满地去面了几家大厂,结果就遇到... 面试官这夺命连环12问,谁顶得住? ...
- 太强了,300分钟撸一个基于redis的亿级用户高并发系统
对于双十一这种高并发.大流量的场景一般都会用到缓存抗住大并发,市面上缓存框架用的最多的无疑就是Redis了,Redis作为稳居世界排名第一的KV内存数据库,同时也是最受欢迎的分布式缓存中间件,是应对高 ...
- Redis(6)——GeoHash查找附近的人
像微信 "附近的人",美团 "附近的餐厅",支付宝共享单车 "附近的车" 是怎么设计实现的呢? 一.使用数据库实现查找附近的人 我们都知道, ...
- 基于redis(v3.2+)实现“附近的人”功能
背景介绍:目前随着电商.社交.游戏和代购等的流行,"附近的人"这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时 ...
- 基于Redis GEO(地理位置) 实现附近的人,商家等相关功能实现 使用SpringBoot Redis工具类
Redis GEO 1.基本介绍 1.Redis GEO 2.基础语法 GEOADD GEOPOS GEODIST GEORADIUS GEOHASH 2.可用于实现的功能 3.SpringBoot实 ...
- Spring boot基于redis实现附近的人(附源码下载)
此文章是针对去年写的Java基于Redis实现"附近的人 进行业务优化! 核心源码 public class NearbyPO {@NotNull(message = "id值不能 ...
最新文章
- 专家谈半导体产业前景 并购热还会继续
- 如何理解苹果iOS版PhoneGap原理分析
- 【玩转cocos2d-x之三十三】游戏嵌入Webview网页
- JAVA程序设计----异常
- hive中分组取前N个值的实现
- 【latex】输入公式与编号
- mysql为什么limit没用,MySQL是否可以使用LIMIT语法进行子查询?如果没有,为什么?...
- 免费又好用的Redis客户端工具!AnotherRedisDesktopManager
- QCC512x / ADK6.2Getting Started
- fw325r没有虚拟服务器,FAST FW325R配置教程
- 数字图像处理 - 灰度级分层 的python实现
- 基于FPGA的SPI-Flash控制器的Verilog设计和验证
- 又是一个相当 带劲的招聘起事
- 这是一份用心整理的Android面试总结,面试真题解析
- 五款高人气商城热销蓝牙耳机,低延迟手游党最爱蓝牙耳机品牌
- python自动化测试selenium(四)切换页面、切换窗口
- 万字长文---手把手教你加固内核安全配置
- C++ decorator(装饰)模式
- 万维全自动网络考试平台python题库_万维全自动考试系统
- 用 HTML5 造个有诚意的 23D 招聘稿