官方相关介绍:https://redis.io/commands/geoadd 菜鸟教程:https://www.runoob.com/redis/redis-geo.html 在线测试:https://try.redis.io/
版本支持
Redis GEO是 Redis 3.2版本之后才支持的。所以我们要确定我们的版本是否支持,打开redis-cli 输入 info 就可以查看redis的信息了!
注意事项:
精度范围是-180 到180的
维度范围是 -85.0511278 到 85.05112878度
相关的命令
- GEOADD :将经纬度添加到key中 参数:Key、精度、维度、名称
- GEODIST : 获取两个坐标之间的距离 默认单位是m 参数 :Key、 名称1、 名称2、单位(可不填写,千米就是km)
- GEOHASH : 返回11位丢失精度的经纬度字符串(如果两个字符串越接近,说明越接近)
- GEOPOS
- GEORADIUS : 获取某一点的某半径内的元素 参数:Key、精度、维度、半径、单位(km)、其他参数(可出现多个WITHDIST、WITHCOORD、WITHHASH、ASC、DESC,更多参数建议去官网查看,更详细)
- GEORADIUSBYMEMBER : 以某个元素为中心,查询某半径范围内的元素 参数:Key、名称、半径、单位、其他参数(更多参数建议去官网查看,更详细))
- GEOSEARCH
- GEOSEARCHSTORE
实验一:添加城市
代码语言:javascript复制# 将116.40 39.90 添加到china:city中,并命名为北京
geoadd china:city 116.40 39.90 beijing
# 连续填写城市
geoadd china:city 121.47 31.23 shanghai 114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
实验二:两个坐标的距离
代码语言:javascript复制geodist china:city beijing xian
>> "910056.5237"
geodist china:city beijing xian km
>> "910.0565"
实验三:查询指定区域范围的其他元素
代码语言:javascript复制# 查询符合距离115.00 38.00 1000千米的前100个元素
georadius china:city 115.00 38.00 1000 km asc count 100
1) "beijing"
2) "hangzhou"
3) "shanghai"
4) "xian"
# 查询符合距离115.00 38.00 500千米的元素
georadius china:city 115.00 38.00 500 km
1) "beijing"
实验四:查询某个元素来指定半径
代码语言:javascript复制# 查询元素北京范围内1000千米的元素
georadiusbymember china:city beijing 1000 km
1) "beijing"
2) "xian"
底层实现就是Zset
当我根据某个元素查询指定半径的其他元素时,发现元素名称打错了,就报了如下错误:
zset member 就是zset集合!
实验四:可用Zset实现原理实现删除某个位置
代码语言:javascript复制# 查询所有的 china:city 元素
zrange china:city 0 -1
# 删除北京元素
zrem china:city beijing
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!