https://www.redis.net.cn/order/3688.html
https://www.bilibili.com/video/BV1S54y1R7SB?p=18
geo 底层的实现原理是zset,可以使用zset命令操作geo。
sorted set使用一种称为Geohash的技术进行填充。经度和纬度的位是交错的,以形成一个独特的52位整数. 我们知道,一个sorted set 的double score可以代表一个52位的整数,而不会失去精度。这种格式允许半径查询检查的1 + 8个领域需要覆盖整个半径,并丢弃元素以外的半径。通过计算该区域的范围,通过计算所涵盖的范围,从不太重要的部分的排序集的得分,并计算得分范围为每个区域的sorted set中的查询。
将指定的地理空间位置(经度、纬度、名称)添加到指定的key中。
规则:
示例:
# 参数 key 值()
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2
获得当前的定位坐标值,从key里返回所有给定位置元素的位置(经度和纬度)
示例
127.0.0.1:6379> GEOPOS china:city beijing # 获取指定的城市的经度和纬度!
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city beijing chongqing
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
2) 1) "106.49999767541885376"
2) "29.52999957900659211"
两地之间的距离,返回两个给定位置之间的距离
单位:
m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
127.0.0.1:6379> GEODIST china:city beijing shanghai km # 查看上海到北京的直线距离,单位为km
"1067.3788"
以给定的经纬度为中心, 找出某一半径内的集合中的元素。
GEORADIUS china:city 110 30 500 km #以(110,30)为中心,500km为半径查询添加到集合中的城市
一些选项:
WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
WITHCOORD: 将位置元素的经度和维度也一并返回。
WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
GEORADIUS china:city 110 30 500 km withdist # 显示时带上到中间距离的位置
GEORADIUS china:city 110 30 500 km withcoord # 显示时带上城市的定位信息
GEORADIUS china:city 110 30 500 km withdist withcoord count 1 #
筛选出指定个数的结果!
找出位于指定范围内的元素,中心点是由给定的位置元素决定。
GEORADIUSBYMEMBER china:city beijing 1000 km # 以北京为中心,1000km以内的城市
返回一个或多个位置元素的 Geohash 表示。
geohash china:city beijing chongqing
注意:
将二维的经纬度转换为一维的geohash字符串,如果两个字符串越接近,那么则距离越近!
ZRANGE china:city 0 -1 # 查看地图集中全部的元素
zrem china:city beijing # 移除指定元素!
NoSQL和Redis学习和入门day01
NoSQL和Redis基础总结day02—五大常用数据类型和持久化
NoSQL和Redis基础知识day03—geospatial地理位置
NoSQL和Redis基础总结day04— 事务 和 发布和订阅机制
NoSQL和Redis基础总结day05— 主从复制,哨兵模式,Redis缓存穿透和雪崩
如果感觉有用的话,感谢点赞!