zoukankan      html  css  js  c++  java
  • 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

    • 查看两人间的距离,其中最后一个参数不填表示单位米
    • 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的各种命令,有利于我们优化我们的代码提升系统吞吐量
  • 相关阅读:
    rsyslog服务日志收集配置
    Python urllib2 发送HTTP Request
    Jenkins版本回滚
    C++算法的40个高频面试问题集锦
    Linux添加自启动daemon service
    python爬虫随机设备信息生成模板
    selenium配置有账号密码验证的代理
    app脱壳后多个dex合并成一个
    webpack优化系列-多进程打包thread-loader
    AtCoder abc158_f
  • 原文地址:https://www.cnblogs.com/sky-chen/p/11671725.html
Copyright © 2011-2022 走看看