Redis的geospatial(地理位置)类型的用法

Redis的geospatial(地理位置)类型的用法

说明:

  • 像微信中朋友的定位,附近的人、打车距离等
  • 可以使用Geo在3.2版本之后推出,可以推算地理位置的信息,两地之间的距离,周围的人
  • 底层是Zset,命令同样适用

常用命令:

  • 添加 geoadd
  • 获取 精度、维度 geopos
  • 返回位置间的距离 geodist
  • 返回位置附近的半径内的元素 georedius
  • 返回指定城市距离的城市 georadiusbymember xxx kaifeng 1000 km
  • 移除 zrem xxx item
  • 获取指定城市的11为geohash信息 geohash xxx xxx
root@tangshihua:/# cd usr/local/bin
root@tangshihua:/usr/local/bin# redis-server tconfig/redis.conf
root@tangshihua:/usr/local/bin# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
1) "set"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> geoadd china:city 116.52 40.32
(error) ERR wrong number of arguments for 'geoadd' command
127.0.0.1:6379>
127.0.0.1:6379> geoadd china:city 116.52 40.32 beijing #1、添加一个城市的信息(精度、维度、城市名称)
(integer) 1
127.0.0.1:6379> geoadd china:city 121.48 31.40 shanghai 106.54 29.40 chongqing 113.88 22.55 shenzhen # 2、也可以同时添加多个
(integer) 3
127.0.0.1:6379> keys *
1) "china:city"
127.0.0.1:6379> geopos china:city beijing # 3、获取一个城市的精度维度信息
1) 1) "116.52000099420547485"
   2) "40.32000085305222825"
127.0.0.1:6379> geopos china:city shanghai
1) 1) "121.48000091314315796"
   2) "31.40000025319353938"
127.0.0.1:6379> geopos china:city shanghai beijing # 4、也可以同获取多个
1) 1) "121.48000091314315796"
   2) "31.40000025319353938"
2) 1) "116.52000099420547485"
   2) "40.32000085305222825"
127.0.0.1:6379> geodist china beijing shanghai km 
(nil)
127.0.0.1:6379> geodist china:city beijing shanghai km 
"1087.7347"
127.0.0.1:6379> geodist china:city beijing chongqing # 5、计算两个城市的距离,默认单位是米
"1515915.5680"
127.0.0.1:6379> geodist china:city beijing chongqing km # 6、计算两个城市的距离,指定单位
"1515.9156"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 7、查找指定经纬度附件方圆1000km的城市(城市数据要录入才能查询)
1) "chongqing"
2) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km count 1 # 8、指定数量
1) "chongqing"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "chongqing"
2) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist #9、同时显示距离
1) 1) "chongqing"
   2) "340.8679"
2) 1) "shenzhen"
   2) "914.3335"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord # 10、同时显示经纬度
1) 1) "chongqing"
   2) 1) "106.54000014066696167"
      2) "29.39999880018641676"
2) 1) "shenzhen"
   2) 1) "113.87999922037124634"
      2) "22.5500010475923105"
127.0.0.1:6379> georadiusbymember china:city beijing 1000 km # 11、查询指定城市方圆1000km的城市信息
1) "beijing"
127.0.0.1:6379> georadiusbymember china:city beijing 2000 km
1) "chongqing"
2) "shenzhen"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> keys *
1) "china:city"
127.0.0.1:6379> zrange china:city 0 -1 # 12、显示全部城市信息
1) "chongqing"
2) "shenzhen"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> zrem china:city shanghai # 13、移除城市信息
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "shenzhen"
3) "beijing"
127.0.0.1:6379> geohash china:city beijing # 14、获取指定城市的geohash值
1) "wx4v7kp30b0"
127.0.0.1:6379>

posted @   爱吃雪糕的小布丁  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示