Redis GEORADIUS命令

Redis的GEORADIUS命令用于通过经纬度查询指定范围内的地理位置信息。下面详细介绍其作用、使用方法及实例说明。

GEORADIUS命令的作用

GEORADIUS命令用于在地理位置信息键空间中查找指定中心点周围指定半径范围内的地理位置数据。它会返回一个或多个地理位置对应的信息,如经度、纬度、名称等。

GEORADIUS命令的使用语法

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

参数说明:

  • key 键名
  • longitude、latitude 经纬度(中心点)
  • radius 查询范围
  • m|km|ft|mi 查询单位,分别表示米、千米、英尺、英里
  • WITHCOORD 返回结果中包含被查询地理位置的经纬度
  • WITHDIST 返回结果中包含被查询地理位置与中心点之间的距离
  • WITHHASH 返回结果中包含被查询地理位置对应的geohash整数
  • COUNT count 返回结果中仅包含前N个地理位置数据
  • ASC|DESC 返回结果中地理距离的排序方式,默认为升序(ASC)
  • STORE key 将查询结果存入新的有序集合中,命名为key
  • STOREDIST key 将查询结果存入新的有序集合中,命名为key,并将对应地理距离用浮点数记录

GEORADIUS命令的使用方法

下面举例说明如何使用GEORADIUS命令。

示例一:查询指定范围内的地理位置

假设在Redis数据库中,已经存储下了多个地理位置信息,其键名为"cities",其中子键为不同城市名称,存储有其经纬度(如下所示)。

> GEOADD cities 116.405285 39.904989 "Beijing"
> GEOADD cities 121.473701 31.230416 "Shanghai"
> GEOADD cities 114.066112 22.548092 "Hong Kong"
> GEOADD cities 113.264434 23.129162 "Guangzhou"

现在,我们想要查询100公里内距离上海市中心点最近的城市名称及其距离。使用GEORADIUS命令,其查询语句如下:

> GEORADIUS cities 121.473701 31.230416 100 km WITHDIST

运行结果如下:

1) 1) "Shanghai"
   2) "0.0000"
2) 1) "Hangzhou"
   2) "157.9801"

结果显示,查询结果为上海和距离上海最近的杭州(距离157.98公里)。

示例二:存储查询结果到新的有序集合

假设现在我想要查询所有距离上海30公里以内的城市,并且将这些城市名称存储到一个新的有序集合中命名为"cities_within_30km"。使用GEORADIUS命令,其查询语句如下:

> GEORADIUS cities 121.473701 31.230416 30 km STORE cities_within_30km

查询结果为空,这是因为查询结果已经被存储到了"cities_within_30km"的有序集合中。可以用ZRANGE命令查看该集合的内容:

> ZRANGE cities_within_30km 0 -1

运行结果如下:

1) "Shanghai"

结果显示,查询结果为只有上海一个城市(因为距离上海30公里以内的城市只有上海一个),并且已被存储到了"cities_within_30km"的有序集合中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Redis GEORADIUS命令 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • Redis Geo: Redis新增位置查询功能

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html   移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用。在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的…

    Redis 2023年4月13日
    00
  • Redis STRLEN命令

    Redis STRLEN命令使用攻略 简介 Redis STRLEN命令用于获取指定键(key)所存储值的长度(字符串长度)。如果键不存在,返回0;如果键存储的不是字符串类型,返回错误。 语法 Redis STRLEN命令的语法格式如下: STRLEN key 参数 key:要查询的键值(字符串类型)。 示例 示例1:获取字符串键的长度 #设置字符串键 se…

    Redis 2023年3月27日
    00
  • Redis 中ZSET数据类型命令使用及对应场景总结

    转载请注明出处:   目录     1.zadd添加元素     2.zrem 从有序集合key中删除元素     3.zscore 返回有序集合key中元素member的分值     4.zincrby 为有序集合key中元素增加分值     5.zcard获取有序集合key中元素总个数     6.zrange 正序获取分值范围内的元素     7.zr…

    Redis 2023年4月9日
    00
  • redis的简单介绍、搭建及java连接测试

      Nosql特点:1、不支持SQL语法 2、存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 3、 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 4、 NoSQL中的产品种类相当多:   Redis既是NoSQL众多产品种类中的一种 redis 是一个由Salvat…

    Redis 2023年4月12日
    00
  • Linux 平台安装 Redis 6.2

    该博客中使⽤的系统为 CentOS 7 Linux 发⾏版 系统版本详情: Linux centos7-shanghai 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux ⚠ 为了确保系统依赖的完整性,请先执⾏如下命令:…

    2023年4月9日
    00
  • ASP.NET Core使用filter和redis实现接口防重

    背景 日常开发中,经常需要对一些响应不是很快的关键业务接口增加防重功能,即短时间内收到的多个相同的请求,只处理一个,其余不处理,避免产生脏数据。这和幂等性(idempotency)稍微有点区别,幂等性要求的是对重复请求有相同的效果和结果,通常需要在接口内部执行业务操作前检查状态;而防重可以认为是一个业务无关的通用功能,在ASP.NET Core中我们可以借助…

    Redis 2023年4月10日
    00
  • 使用redis作为缓存,数据还需要存入数据库中吗?(转)

    转自https://blog.csdn.net/wypersist/article/details/79955704 使用redis作为缓存,数据还需要存入数据库中吗?     我的答案是: 1redis只是缓存,不是数据库如mysql,所以redis中有的数据库,mysql中一定有。 2用户请求先去请求redis,如果没有,再去数据库中去读取。 3redi…

    Redis 2023年4月11日
    00
  • Redis PEXPIREAT命令

    Redis是一种高性能的键值数据库,支持多种数据结构和丰富的功能。PEXPIREAT是Redis提供的一个命令,可以以毫秒为单位设置key的过期时间,与EXPIREAT用法类似,但过期时间使用毫秒计算。 命令语法 PEXPIREAT key milliseconds-timestamp 返回值 设置成功返回1,设置失败(key不存在)返回0。 使用方法 使用…

    Redis 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部