前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis学习(八)

redis学习(八)

作者头像
崔笑颜
发布2020-09-07 00:37:55
7390
发布2020-09-07 00:37:55
举报
文章被收录于专栏:小小码农一个。

三种特殊类型

Geospatial 地理位置

朋友的定位,附近的人,打车距离计算? Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆 几里的人! 可以查询一些地理位置的测试数据:http://www.jsons.cn/lngcodeinfo/0706D99C19A781A3/ 只有 六个命令:

image-20200725204707728
image-20200725204707728

官方文档:https://www.redis.net.cn/order/3685.html

getadd

getadd 添加地理位置

  • 规则:两级无法直接添加,我们一般会下载城市数据,直接通过java程序一次性导入!
  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。
  • 当坐标位置超出上述指定范围时,该命令将会返回一个错误
代码语言:javascript
复制
127.0.0.1:6666> geoadd china:city 31.23 121.47 shanghai # 这里报错。
(error) ERR invalid longitude,latitude pair 31.230000,121.470000
127.0.0.1:6666> geoadd china:city 116.40 39.90 beijing # 下面格式才对。
(integer) 1
127.0.0.1:6666> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6666> geoadd china:city 120.16 30.24 hangzhou
(integer) 1
127.0.0.1:6666> geoadd china:city 108.96 34.26 xian
(integer) 1
127.0.0.1:6666> geoadd china:city 113.66 34.75 zhengzhou
(integer) 1
# 获取当前坐标定位。
127.0.0.1:6666> geopos china:city beijing # 获取指定城市的经纬度。
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6666> geopos china:city beijing shanghai
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
2) 1) "121.47000163793563843"
   2) "31.22999903975783553"
# geodist 两人之间的距离
# 单位 m,km,mi英里,ft英尺。
127.0.0.1:6666> geodist china:city beijing shanghai km # 北京到上海单位千米。
"1067.3788"
127.0.0.1:6666> geodist china:city beijing zhengzhou # 北京到郑州单位米。
"621882.2073"
127.0.0.1:6666> geodist china:city beijing zhengzhou km
"621.8822"
# georadius 以给定的经纬度为中心, 找出某一半径内的元素
# 我附近的人? (获得所有附近的人的地址,定位!)通过半径来查询!
# 获得指定数量的人,200
# 所有数据应该都录入:china:city ,才会让结果更加请求
127.0.0.1:6666> georadius china:city 110 30 1000 km # 根据110 30 经纬度为坐标,寻找方圆1000km内的城市。
1) "xian"
2) "hangzhou"
3) "zhengzhou"
127.0.0.1:6666> georadius china:city 110 30 500 km
1) "xian"
127.0.0.1:6666> georadius china:city 110 30 500 km withdist # 显示范围内城市,加距离。
1) 1) "xian"
   2) "483.8340"
127.0.0.1:6666> georadius china:city 110 30 500 km withcoord # 显示他人的定位信息。
1) 1) "xian"
   2) 1) "108.96000176668167114"
      2) "34.25999964418929977"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord count 1 # 筛选出最近的一个结果。
1) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord 
1) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
2) 1) "hangzhou"
   2) "977.5143"
   3) 1) "120.1600000262260437"
      2) "30.2400003229490224"
3) 1) "zhengzhou"
   2) "630.2160"
   3) 1) "113.65999907255172729"
      2) "34.74999926510690784"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord count 2 # 两个。
1) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
2) 1) "zhengzhou"
   2) "630.2160"
   3) 1) "113.65999907255172729"
      2) "34.74999926510690784"
# 找出指定范围内的其他元素。通过a找b。
127.0.0.1:6666> georadiusbymember china:city beijing 1000 km 
1) "zhengzhou"
2) "beijing"
3) "xian"
127.0.0.1:6666> georadiusbymember china:city shanghai 400 km
1) "hangzhou"
2) "shanghai"
# geohash返回11位的字符串。将二维的经纬度,转换为一个字符串,两个字符串越相近,表示距离也越近。
127.0.0.1:6666> geohash china:city beijing zhengzhou
1) "wx4fbxxfke0"
2) "ww0vdqh9mv0"
# geo的底层就是zset,同理可以使用zset的命令。
127.0.0.1:6666> zrange china:city 0 -1
1) "xian"
2) "hangzhou"
3) "shanghai"
4) "zhengzhou"
5) "beijing"
127.0.0.1:6666> zrem china:city beijing
(integer) 1
127.0.0.1:6666> zrange china:city 0 -1
1) "xian"
2) "hangzhou"
3) "shanghai"
4) "zhengzhou"

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三种特殊类型
    • Geospatial 地理位置
      • getadd 添加地理位置
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档