Redis之GEO存储地理位置信息的使用

目录
  • 常用API
  • geoadd
  • geopos
  • geodist
  • georadiusbymember
  • geohash

在外卖软件中的附近的美食店铺、外卖小哥的距离,打车软件附近的车辆,交友软件中附近的小姐姐。我们都可以利用redis的GEO地理位置计算得出。

1、Redis 的 Geo 是在 3.2 版本才有的

2、使用 geohash 保存地理位置的坐标

3、使用有序集合(zset)保存地理位置的集合

常用API

命令 描述
geoadd 增加某个地理位置的坐标
geopos 获取某个地理位置的坐标
geodist 获取某个地理位置的坐标
georadius 根据给定地理位置坐标获取指定范围内的地理位置集合
georadiusbymember 根据给定地理位置获取指定范围内的地理位置集合
geohash 获取某个地理位置的 geohash 值

geoadd

API:geo key longitude latitude member [longitude latitude member ..]

功能:增加地理位置信息

演示:

127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 1
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 0
127.0.0.1:6379> geoadd cities:locations 117.12 39.08 tianjin
(integer) 1
127.0.0.1:6379> geoadd cities:locations 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
(integer) 3

geopos

API:geopos key member [member]

功能:增加地理位置信息

演示:

127.0.0.1:6379>  geopos cities:locations beijing
1) 1) "116.28000229597091675"
   2) "39.5500007245470826"
127.0.0.1:6379>  geopos cities:locations beijing tianjin
1) 1) "116.28000229597091675"
   2) "39.5500007245470826"
2) 1) "117.12000042200088501"
   2) "39.0800000535766543"

geodist

API:geodsit key member member1 member2

功能:获取两个地理位置的距离

#unit:m(米)、km(千米)、mi(英里)、ft(尺)

演示:

127.0.0.1:6379> geodist cities:locations beijing tianjin km
"89.2061"

georadiusbymember

API:georadiusbymember key member raidusm|km|ft|mi [withcoord][withdist][withhash][COUNT count][asc|desc][store key][storedist key]

功能:获取两个地理位置的距离

参数:

  • withcoord:返回结果中包含经纬度
  • withdist:返回结果中包含距离中心节点位置
  • withhash:返回结果中包含geohash
  • COUNT count:指定返回结果的数量
  • asc|desc:返回结果按照距离中心节点距离做升序或者倒序排列
  • store key:将返回结果的地理位置信息保存到制定key
  • storedist key:将返回结果距离中心节点的距离保存到指定键

演示:

查询距离北京550千米以内的所有城市,并按距离升序排列

127.0.0.1:6379> georadiusbymember cities:locations beijing 550 km  withdist asc
1) 1) "beijing"
   2) "0.0000"
2) 1) "tianjin"
   2) "89.2061"
3) 1) "baoding"
   2) "143.8646"
4) 1) "tangshan"
   2) "149.7479"
5) 1) "shijiazhuang"
   2) "242.3263"

geohash

API:geopos key member [member]

功能:获取某个地方的哈希值

演示:

127.0.0.1:6379> geohash cities:locations beijing
1) "wx48ypbe2q0"

到此这篇关于Redis之GEO存储地理位置信息的使用的文章就介绍到这了,更多相关Redis GEO存储地理位置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis 的 GeoHash详解

    Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近的 Mobike」.美团和饿了么「附近的餐馆」这样的功能了. 用数据库来算附近的人 地图元素的位置数据使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负.比如掘金办公室在望京 SOHO,它的经纬度坐标是 (116.48105,39.996794),都是正数,因

  • Redis中3种特殊的数据类型(BitMap、Geo和HyperLogLog)

    前言 Reids 在 Web 应用的开发中使用非常广泛,几乎所有的后端技术都会有涉及到 Redis 的使用.Redis 种除了常见的字符串 String.字典 Hash.列表 List.集合 Set.有序集合 SortedSet 等等之外,还有一些不常用的数据类型,这里着重介绍三个.下面话不多说了,来一起看看详细的介绍吧. BitMap BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现.Redis 从

  • Redis之GEO存储地理位置信息的使用

    目录 常用API geoadd geopos geodist georadiusbymember geohash 在外卖软件中的附近的美食店铺.外卖小哥的距离,打车软件附近的车辆,交友软件中附近的小姐姐.我们都可以利用redis的GEO地理位置计算得出. 1.Redis 的 Geo 是在 3.2 版本才有的 2.使用 geohash 保存地理位置的坐标 3.使用有序集合(zset)保存地理位置的集合 常用API 命令 描述 geoadd 增加某个地理位置的坐标 geopos 获取某个地理位置的坐

  • python使用在线API查询IP对应的地理位置信息实例

    这篇文章中的内容是来源于去年我用美国的VPS搭建博客的初始阶段,那是有很多恶意访问,我就根据access log中的源IP来进行了很多统计,同时我也将访问量最高的恶意访问的源IP拿来查询其地理位置信息.所以,我就用到了根据IP查询地理位置信息的一些东西,现在将这方面积累的一点东西共享出来. 根据IP查询所在地.运营商等信息的一些API如下(根据我有限的一点经验):1. 淘宝的API(推荐):http://ip.taobao.com/service/getIpInfo.php?ip=110.84.

  • docker下的 redis 之持久化存储详解

    本章节开始 我们在docker下 进行 spring Boot项目操作redis 准备工作: (1) 创建文件夹:usr/local/work/share (2) 拉取项目,这是一个打包好的jar包 (3) 将拉取的 jar包放到刚刚创建的文件夹下,同时再创建一个名字为 docker-compose.yml的文件 (4) 在 tmp目录中创建一个 data 文件夹 (5) 并在 docker-compose.yml文件中写入以下内容: redis: image: redis:3 ports: -

  • SpringBoot整合Redis实现序列化存储Java对象的操作方法

    目录 一.背景 1.思考 2.方案 二.源码分析 三.注入RedisTemplate 1.引入依赖 2.Redis 连接信息 3.Redis 核心配置类 4.Redis工具类 四.测试 1.创建 Java 实体类 UserInfo 2.测试用例 3.测试结果 之前介绍过 https://www.jb51.net/article/223539.htm 我们可以看出,在 SpringBoot 对 Redis 做了一系列的自动装配,使用还是非常方便的 一.背景 1.思考 通过我们前面的学习,我们已经可

  • PHP使用Redis替代文件存储Session的方法

    本文实例讲述了PHP使用Redis替代文件存储Session的方法.分享给大家供大家参考,具体如下: PHP默认使用文件存储session,如果并发量大,效率非常低.而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session. 这里,介绍下php的session_set_save_handler 函数的作用和使用方法.该函数定义用户级session保存函数(如打开.关闭.写入等). 原型如下: bool session_set_save_hanler(callback

  • 百度地图api应用标注地理位置信息(js版)

    有时做了一些东西没有记录,而过一段时间再看的时候,有会忘记了.需要在重新在看一遍. 百度地图javascript api可以参考 http://developer.baidu.com/map/reference/  示例:http://developer.baidu.com/map/jsdemo.htm 更多百度地图的介绍http://www.cnblogs.com/milkmap/tag/%E5%9C%B0%E5%9B%BEAPI/   里面介绍的非常详细. 弄了一个百度地图来标注地理位置信息

  • js+html5获取用户地理位置信息并在Google地图上显示的方法

    本文实例讲述了js+html5获取用户地理位置信息并在Google地图上显示的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html> <html> <body> <p id="demo">Click the button to get your position:</p> <button onclick="getLocation()">Try It</button&

  • JavaScript地理位置信息API

    对于一个Web开发程序员来说,开发工作中一个最有意思的方面就是获取地理位置信息:试想一下,浏览你的网页的用户是在什么地方?程序员可以根据用户的地理位置信息来调整网站的语言.特定产品介绍等.下面我们将要演示的就是通过浏览器里JavaScript地理位置信息API来获取详细地理信息! 检查你的浏览器是否支持地理位置信息API 目前主流的浏览器都已经对JavaScript地理位置信息API有了较好的支持.但如果你还不放心,那么,确认地理位置信息API支持情况最好的方式是浏览器的功能特征测试. if("

  • 微信获取用户地理位置信息的原理与步骤

    在微信公众服务号开发需求中经常有获取用户位置信息的功能,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动. 下面通过给大家介绍微信服务号获取用户位置信息的原理与步骤. 原理 1. 位置信息获取流程 2. 位置信息报文 <xml><ToUserName><![CDATA[gh_public_member_account]]></ToUserName> <FromUserName><![CDATA[oNEGGwGfl8f5xME

  • Android 7.0开发获取存储设备信息的方法

    本文实例讲述了 Android 7.0开发获取存储设备信息的方法.分享给大家供大家参考,具体如下: Android 7.0开发相较之前有不少改进,具体可参考前面的文章Android7.0版本影响开发的改进分析,这里简单总结一下Android 7.0针对存储设备的简单操作方法. MountPoint 我们通过MountPoint来描述android设备信息 private static class MountPoint { String mDescription; String mPath; bo

随机推荐