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

  • 查看两人间的距离,其中最后一个参数不填表示单位米
  • mkm千米 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的各种命令,有利于我们优化我们的代码提升系统吞吐量

最新文章

  1. JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片
  2. ThinkCMF-首页Nav部分菜单配置详解
  3. Hide SSH Welcome Banner/Message on Ubuntu14.04+
  4. JavaWEB中读取配置信息
  5. mtk android lcm调试
  6. searchDisplayController 时引起的数组越界
  7. Codevs 3729==洛谷P1941 飞扬的小鸟
  8. Win7中修改Chrome浏览器缓存文件目录
  9. SanDisk SecureAccess™ Software
  10. oracle使用exp与imp在本地导入导出数据
  11. Computer Graphics Principles And Practice (James Foley / Andries Van Dam / Morgan McGuire / David Sklar / James D. Foley 著)
  12. ExtJS中获取选中行的数据
  13. Android--Service之AIDL传递复杂对象
  14. 4-23 模块 hashlib ,configparser,loging,collections
  15. idea+maven+springboot+mybatis
  16. CRM 2016 Get IOrganizationService
  17. [luogu4265][USACO18FEB]Snow Boots silver
  18. 20155312 2006-2007-2 《Java程序设计》第三周学习总结
  19. DataList中动态显示DIV
  20. POJ 1149 - PIGS - [最大流构图]

热门文章

  1. iOS中进程与线程(多线程、主次线程)
  2. Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
  3. [20191010]bash行计算器.txt
  4. 详解TCP与UDP
  5. 无序数组中用 快速排序的分治思想 寻找第k大元素
  6. Ambari 大数据集群管理
  7. 使用响应的json数据判断订单查询是否成功;
  8. c# WF 第9节 button控件
  9. java中的字符串一
  10. jquery和bootstrap: