前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis GEO 地理位置 Geospatial 可实现附近的人

Redis GEO 地理位置 Geospatial 可实现附近的人

作者头像
收心
发布2022-01-19 14:23:57
4710
发布2022-01-19 14:23:57
举报
文章被收录于专栏:Java实战博客Java实战博客

官方相关介绍: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的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版本支持
    • 注意事项:
    • 相关的命令
      • 实验一:添加城市
        • 实验二:两个坐标的距离
          • 实验三:查询指定区域范围的其他元素
            • 实验四:查询某个元素来指定半径
              • 底层实现就是Zset
                • 实验四:可用Zset实现原理实现删除某个位置
                相关产品与服务
                云数据库 Redis
                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com