目录
1 GEOADD 方法 存储坐标 返回新添加至位置集合的坐标数量
6 GEOSEARCHSTORE 可以把结果存储到一个指定的key
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:
-
GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)
-
GEODIST:计算指定的两个点之间的距离并返回
-
GEOHASH:将指定member的坐标转为hash字符串形式并返回
-
GEOPOS:返回指定member的坐标
-
GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。6.以后已废弃
-
GEOSEARCH:在指定范围内搜索member,并按照与指定点之间的距离排序后返回。范围可以是圆形或矩形。6.2.新功能
-
GEOSEARCHSTORE:与GEOSEARCH功能一致,不过可以把结果存储到一个指定的key。 6.2.新功能
1 GEOADD 方法 存储坐标 返回新添加至位置集合的坐标数量
参数:
- XX:只更新已经存在的元素。不添加元素。
- NX:不更新已存在的元素。总是添加新元素。
- CH:返回被修改的元素个数(CH 是changed的缩写)包括:新增元素、经纬度更新的元素(默认)
使用:
复杂度:O(log (N)*M),其中N为位置集合目前包含的位置数量,M为用户给定的位置数量。
2 GEODIST 计算两个位置之间的直线距离
使用:
复杂度:O(log (N)),其中N为位置集合目前包含的位置数量。
3 GEOHASH 返回位置的 hash结构
使用:
当应用程序因为某些原因只能使用单个值去表示位置的经纬度时,我们就可以考虑使用GEOHASH命令去获取位置坐标的Geohash值,而不是直接使用GEOPOS命令去获取位置的经纬度
4 GEOPOS 返回插入的坐标
使用GEOPOS命令去获取给定位置的坐标
使用:
复杂度:O(log (N)*M),其中N为位置集合目前包含的位置数量,而M则为用户给定的位置数量。
5 GEOSEARCH 周边搜索
说明: key 搜索的key 这个没什么好说的
FROMMMEMBER(以那个为中心搜索 这个是设置的value的key) FROMLONLAT (一那个为中心 这个是坐标的方法 )
BYRADIUS (圆型 半径 多少 单位) BYBOX(方形 宽高 多少 单位)
ASC DESC 升序 降序 这个也没什么好说的 学过一种数据库的都知道
COUNT 查多少条
WITHHASH 结果中包含被匹配位置的Geohash值 WITHDIST 计算出这些点到指定坐标的直线距离 WITHCOORD 返回查询的结过的同时把结果的坐标一起返回
使用:
提前多插入几条数据 数据我乱写的 没有实际意义
使用:
6 GEOSEARCHSTORE 可以把结果存储到一个指定的key
参数一样
destination 查询后存放数据的key source 数据源
使用:
7 使用有序集合命令操作GEO数据
Redis使用有序集合存储GEO数据,一个位置集合实际上就是一个有序集合:当用户调用GEO命令对位置集合进行操作时,这些命令实际上是在操作一个有序集合。
我们可以使用zset命令来操作GEO
可以看这位大佬的