利用Redis查询附近的人——GEO

本文介绍了Redis 3.2版本中的GEO类型,用于存储和查询地理位置。通过`geoadd`、`geopos`、`geodist`、`georadius`等命令,展示了如何添加、查询、统计距离以及删除地理位置信息。GEO适用于查询附近的人、地点等场景,但需要注意在大规模数据下,避免单个key过大影响集群迁移,可考虑数据拆分和独立部署。
摘要由CSDN通过智能技术生成


我们所处的任何位置都可以用经度和纬度来标识,经度的范围 -180 到 180,纬度的范围为 -90 到 90。纬度以赤道为界,赤道以南为负数,赤道以北为正数;经度以本初子午线(英国格林尼治天文台)为界,东边为正数,西边为负数。

Redis 在 3.2 版本中增加了 GEO 类型用于存储和查询地理位置,关于 GEO 的命令不多,主要包含以下 6 个:

  • geoadd:添加地理位置
  • geopos:查询位置信息
  • geodist:距离统计
  • georadius:查询某位置内的其他成员信息
  • geohash:查询位置的哈希值
  • zrem:删除地理位置 下面我们分别来看这些命令的使用。

基础使用

添加地理位置

可以先用百度地图提供的经纬度查询工具,地址:
http://api.map.baidu.com/lbsapi/getpoint/index.html
在这里插入图片描述
找了以下 4 个地点,添加到 Redis 中

天安门:116.404269,39.913164 月坛公园:116.36,39.922461 北京欢乐谷:116.499705,39.874635 香山公园:116.193275,39.996348

1 geoadd site 116.404269 39.913164 tianan
2 (integer) 1
3 geoadd site 116.36 39.922461 yuetan
4 (integer) 1
5 geoadd site 116.499705 39.874635 huanle
6 (integer) 1
7 geoadd site 116.193275 39.996348 xiangshan
8 (integer) 1

重点参数说明如下:

  • longitude 表示经度
  • latitude 表示纬度
  • member 是为此经纬度起的名字 此命令支持一次添加一个或多个位置信息。

查询位置信息

1 geopos site tianan
2 1) 1) "116.40541702508926392"
3    2) "39.91316289865137179"

相关语法

1 geopos key member [member ...]

此命令支持查看一个或多个位置信息。

距离统计

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值