Redis7系列:Redis GEO解锁百万级地理位置数据的超能力

1

Redis7系列:Redis GEO解锁百万级地理位置数据的超能力

想用代码丈量地球?Redis GEO数据类型让你用一行命令就能构建滴滴打车般的实时定位系统!这个藏在Redis中的空间魔法,自3.2版本起就为开发者打开了新世界的大门。

01 空间魔法的核心咒语

Redis GEO本质上是基于Sorted Set的魔法变形,它将经纬度编码为52位Geohash字符串,化身ZSET的score值。

GEO 数据类型是从Redis3.2.0开始有的。

1.1 咒语:GEOADD
# 增加经维度信息
GEOADD key [NX | XX] [CH] longitude latitude member [longitude latitude member ...]
  • key: Redis的Key,管理经纬度的标识
  • NX:不存时写入
  • XX:存在时写入
  • CH:改变计数器的开关,全称changed
  • longitude:经度
  • latitude:维度
  • member:可以理解为这组经纬度(成员)的一个名称

可以一次性增加多个经纬度。

数据准备:

上海市:121.480248,31.236276

苏州市:120.591682,31.305976

杭州市:120.216329,30.252589

> geoadd cities 121.480248 31.236276 shanghai 120.591682 31.305976 suzhou 120.216329 30.252589 hangzhou
(integer) 3

CH 的使用:坐标变化检测的计数器

我们修改上海的坐标:121.49 31.24 shanghai

> geoadd cities 121.49 31.24 shanghai
(integer) 0

> geopos cities shanghai
1) 1) "121.49000018835067749"
   2) "31.24000104945258727"

我们看到shanghai的坐标已经改变,但是返回值是0。我们再改回去,加上CH

> geoadd cities CH 121.480248 31.236276 shanghai
(integer) 1

> geopos cities shanghai
1) 1) "121.48024767637252808"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值