java redis geo_Redis命令geoXXX

1. Redis命令geoXXX

1.1. 介绍

自Redis 3.2开始,Redis基于geohash和有序集合提供了地理位置相关功能。

Redis Geo模块包含了以下6个命令:

GEOADD: 将给定的位置对象(纬度、经度、名字)添加到指定的key;

GEOPOS: 从key里面返回所有给定位置对象的位置(经度和纬度);

GEODIST: 返回两个给定位置之间的距离;

GEOHASH: 返回一个或多个位置对象的Geohash表示;

GEORADIUS: 以给定的经纬度为中心,返回目标集合中与中心的距离不超过给定最大距离的所有位置对象;

GEORADIUSBYMEMBER: 以给定的位置对象为中心,返回与其距离不超过给定最大距离的所有位置对象。

1.2. 实践

1.2.1. geoadd和geopos

加入某些人位置数据,并查看特定人物位置

127.0.0.1:6379> geoadd mypos 120.000000 30.000000 "me"

(integer) 1

127.0.0.1:6379> geoadd mypos 120.000000 31.000000 "lili" 121.000000 32.000000 "lilei"

(integer) 2

127.0.0.1:6379> geopos mypos me

1) 1) "120.00000089406967"

2) "30.000000249977013"

1.2.2. geodist

查看两人间的距离,其中最后一个参数不填表示单位米

m 米 km千米 mi英里 ft 英尺

127.0.0.1:6379> geodist mypos me lili

"111226.3808"

127.0.0.1:6379> geodist mypos me lili m

"111226.3808"

127.0.0.1:6379> geodist mypos me lili km

"111.2264"

127.0.0.1:6379> geodist mypos me lili mi

"69.1130"

127.0.0.1:6379> geodist mypos me lili ft

"364915.9475"

127.0.0.1:6379> geodist mypos lili lilei

"146166.0591"

1.2.3. geohash

对应位置的hash表示

127.0.0.1:6379> geohash mypos lili lilei

1) "wtt26emk4e0"

2) "wtwn13mt820"

1.2.4. georadius

找到目标集合中距离特定经纬度距离在一定值以内的集合元素

下列参数很好解释 mypos集合 119 30 经度纬度 120千米范围内的集合元素有哪些,这个方法很有用,可以用来作为附近的人查询

127.0.0.1:6379> georadius mypos 119 30 120 km

1) "me"

127.0.0.1:6379> georadius mypos 121 31 200 km

1) "me"

2) "lili"

3) "lilei"

1.2.5. georadiusbymember

相比上面的可能会更接近实际用法,查询特定对象附近特定距离内的对象

127.0.0.1:6379> georadiusbymember mypos lili 120 km

1) "lili"

2) "me"

127.0.0.1:6379> georadiusbymember mypos me 200 km

1) "me"

2) "lili"

127.0.0.1:6379> georadiusbymember mypos lilei 200 km

1) "lilei"

2) "lili"

1.3. 总结

redis的优势就是各种数据结构和更方便的计算命令,熟练掌握redis的各种命令,有利于我们优化我们的代码提升系统吞吐量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值