Redis命令geoXXX
程序员文章站
2022-05-18 20:23:37
1. Redis命令geoXXX 1.1. 介绍 自Redis 3.2开始,Redis基于geohash和有序集合提供了地理位置相关功能。 Redis Geo模块包含了以下6个命令: GEOADD: 将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS: 从key里面返回所有给定位 ......
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的各种命令,有利于我们优化我们的代码提升系统吞吐量
上一篇: Java自学-JDBC 增、删、改