Redis特殊类型
地理空间——Geospatial
- 时间复杂度:每一个元素添加是O(log(N)) ,N是sorted set中的元素数量。
- Geospatial指定的地理空间位置添加到指定的key中,这些数据将会存储到sorted set中,方便使用命令对数据查询等操作。
- 常用单位有: m(米) km(千米) mi(英里) ft(英尺)
常用命令
注意: 部分图片中有相应的解释
geoadd
添加地址位置:geoadd key 纬度 经度 名称
geopos
返回给定名称的经度和纬度:geopos key member
可以看出,自己存入的和实际返回的,是有细微的差别的。
geodist
返回两个给定位置之间的距离:geodist key member1 member2 距离单位
geohash
返回给定的名称的11位的字符哈希值:geohash key member
georadius
以给定经纬度为中心,找到某一个半径内的元素(member): georadius key longitude latitude radius 单位。
经纬度可以是随意值,radius是半径,还要加上距离单位。
应用场景
- 打车时,附近的空车
- 社交软件附近的人
georadiusbymember
以一个成员为中心,查找指定范围内的元素(member):georadiusbymember key member radius 单位【m|km|ft|mi】
Geospatial应用场景
根据不同的方法,有不同的应用场景
- 实现定位
- 附近的人
- 打车APP/地图导航上距离的计算
- 更多有关Redis的内容,详戳【Redis合集】,更多Redis命令,详戳【Redis中文官网】,其他内容,详戳主页
- 相关链接:【经纬度查询】或Redis中文官网提供的【经纬度查询-Redis官网提供】。(推荐使用第一种)