• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

Redis中Geospatial类型数据基本使用

Redis中Geospatial类型数据基本使用

Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作

下面介绍一些Geospatial类型的常用命令

  • 添加地理位置(经度,纬度,名称):geoadd key 经度1 纬度1 名称1 经度2 纬度2 名称2 经度3 纬度3 名称3......,eg:
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 116.38 39.90 beijing
(integer) 3

两极无法直接添加,一般会下载城市数据,直接通过 Java 程序一次性导入;已经添加的数据,是无法再次往里面添加的

有效的经度从 -180 度到 180 度,有效的纬度从 -85.05112878 度到 85.05112878 度;当坐标位置超出指定范围时,该命令将会返回一个错误

  • 获取指定地区的坐标值:geopos key 名称1 名称2 名称3......,eg:
127.0.0.1:6379> geopos china:city shanghai beijing
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"
2) 1) "116.38000041246414185"
   2) "39.90000009167092543"
  • 获取两个位置之间的直线距离:geodist key 名称1 名称2,eg:
127.0.0.1:6379> geodist china:city shanghai beijing
"1068153.5181"
127.0.0.1:6379> geodist china:city shanghai beijing km
"1068.1535"
# 只能是两个位置之间的距离
127.0.0.1:6379> geodist china:city shanghai beijing chongqing
(error) ERR unsupported unit provided. please use m, km, ft, mi

单位:m 表示单位为米[默认值] km 表示单位为千米 mi 表示单位为英里 ft 表示单位为英尺

  • 以给定的经纬度为中心,找出某一半径内的元素:georadius key 经度 纬度 半径 [单位],eg:
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "shenzhen"
记得快乐
posted @ 2022-05-02 23:13  Y-wee  阅读(162)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3