Redis之geospatial

地理空间(geospatial)

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。

Redis GEO 操作方法有

  • geoadd:添加地理位置的坐标。
  • geopos:获取地理位置的坐标。
  • geodist:计算两个位置之间的距离。
  • georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
  • georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
  • geohash:返回一个或多个位置对象的 geohash 值。

案例

  • geoadd:添加地理位置
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
(integer) 1
  • GEOPOS
127.0.0.1:6379> GEOPOS china:city beijing                     #获取指定城市的经度纬度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city chongqing
1) 1) "106.49999767541885376"
   2) "29.52999957900659211"
127.0.0.1:6379> GEOPOS china:city xian
1) 1) "120.1600000262260437"
   2) "34.25999964418929977"
  • geodist
    获取两个城市之间的距离
127.0.0.1:6379> geodist  china:city beijing shanghai
"1067378.7564"
127.0.0.1:6379> geodist  china:city beijing shanghai km       #获取北京和重庆之间的距离,以KM为单位
"1067.3788"
  • georadius
    获取附近的人,以给定的经纬度为中心,找出某一半径内的元素
127.0.0.1:6379> georadius china:city 110 30 1000 km                  #以110 30为经纬度获取半径1000km之内的位置
1) "chongqing"
127.0.0.1:6379> georadius china:city 110 30 10000 km
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"

127.0.0.1:6379> georadius china:city 110 30 10000 km  withdist      #显示到中心位置的距离
1) 1) "chongqing"
   2) "341.9374"
2) 1) "shanghai"
   2) "1105.9098"
3) 1) "xian"
   2) "1067.1103"
4) 1) "beijing"
   2) "1245.2858"


127.0.0.1:6379> georadius china:city 110 30 1000 km  withdist withcoord count 1      #withcoord显示它人的经度纬度
1) 1) "chongqing" 
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"
127.0.0.1:6379>
127.0.0.1:6379> georadius china:city 110 30 1000 km  withdist withcoord count 2      #count限制显示的数量
1) 1) "chongqing"
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"
127.0.0.1:6379> georadius china:city 110 30 10000 km  withdist withcoord count 2
1) 1) "chongqing"
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"
2) 1) "xian"
   2) "1067.1103"
   3) 1) "120.1600000262260437"
      2) "34.25999964418929977"
  • georadiusbymember
127.0.0.1:6379> georadiusbymember china:city beijing 10000 km                             #显示北京10000km之内的城市
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"
  • geohash
    将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么则距离越近!
127.0.0.1:6379> geohash china:city beijing chongqing
1) "wx4fbxxfke0"
2) "wm5xzrybty0"
posted @   *一炁化三清*  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示