Redis GEORADIUSBYMEMBER命令

Redis GEORADIUSBYMEMBER命令

Redis GEORADIUSBYMEMBER命令是基于指定位置的点集合,按照半径的距离范围进行查询,并返回指定的GeoHash字符串。

GEORADIUSBYMEMBER命令的使用场景是基于地理位置数据集,如城市经纬度、商家定位、影院经纬度等,实现一些地理位置信息的查询需求。

Redis GEORADIUSBYMEMBER命令的使用方法

GEORADIUSBYMEMBER命令参数说明如下:

georadiusbymember key member radius unit [withdist] [withcoord] [withhash] [count count] [asc|desc] [store key] [storedist key]
  • key: GeoHash键
  • member: 指定的GeoHash字符串
  • radius: 搜索半径,与unit一起构成搜索半径范围,单位可以是米、千米、英里或英尺
  • unit: 搜索半径单位,可选值为m、km、mi、ft
  • withdist: 是否返回距离,1为是,0为否,当指定时,结果中会包含距离信息
  • withcoord: 是否返回坐标,1为是,0为否,当指定时,结果中会包含坐标信息
  • withhash: 是否返回GeoHash字符串,1为是,0为否,当指定时,结果中会包含GeoHash字符串信息
  • count: 返回的数据数量限制,即最多返回数量,当指定时,只会返回目标数量的结果,默认返回全部
  • asc/desc: 指定数据排序方式,asc表示升序,desc表示降序,默认是升序
  • store key: 如果指定,则将搜索结果的坐标位置保存到指定的key中
  • storedist key: 如果指定,则将搜索结果的距离保存到指定的key中

注意:当同时使用withdist和withcoord时,结果集中先返回距离,后返回坐标。

Redis GEORADIUSBYMEMBER命令的实例

实例1:

假设我们需要查询一个圆形区域内所有影院信息,影院的经纬度已经存储在Redis中。现在我们需要查询北京远洋商圈内所有的影院信息,该商圈的经纬度是40.078687, 116.216369,实现步骤如下:

1、使用GEOADD命令将影院信息添加到redis中。

127.0.0.1:6379> GEOADD cinema 116.219062, 40.072019, beijing1
(integer) 1
127.0.0.1:6379> GEOADD cinema 116.237213, 40.064424, beijing2
(integer) 1
127.0.0.1:6379> GEOADD cinema 116.175114, 40.082982, beijing3
(integer) 1
127.0.0.1:6379> GEOADD cinema 116.218090, 40.081568, beijing4
(integer) 1

2、使用GEORADIUSBYMEMBER命令查询影院信息,半径为2公里,同时返回影院坐标信息和GeoHash字符串信息。

127.0.0.1:6379> GEORADIUSBYMEMBER cinema beijing1 2000 m withcoord withhash
1) 1) "beijing1"
   2) 1) "116.2190625667572"
      2) "40.07201815458682"
      3) "wx4gde6q17r"

3、使用GEORADIUSBYMEMBER命令查询影院信息,半径为2公里,只返回距离信息和坐标信息。

127.0.0.1:6379> GEORADIUSBYMEMBER cinema beijing1 2000 m withdist withcoord
 1) 1) "beijing1"
    2) "1.6371"
    3) 1) "116.2190625667572"
       2) "40.07201815458682"
 2) 1) "beijing4"
    2) "1.6834"
    3) 1) "116.21808993816376"
       2) "40.08156828979726"

实例2:

现在我们需要查询两个城市之间的距离,城市经纬度信息如下:

  • 北京: 39.904989,116.405285
  • 上海: 31.230416,121.473701

实现步骤如下:

1、首先使用GEOADD命令将城市信息存储到Redis中。

127.0.0.1:6379> GEOADD city 116.405285, 39.904989, beijing
(integer) 1
127.0.0.1:6379> GEOADD city 121.473701, 31.230416, shanghai
(integer) 1

2、使用GEODIST命令计算两个城市之间的距离。

127.0.0.1:6379> GEODIST city beijing shanghai km
"1063.9386"

总结

Redis GEORADIUSBYMEMBER命令可以方便地实现基于地理位置的搜索、查询等功能。通过该命令,可以快速找到一定范围内的商家、影院等信息,并可以方便地计算两个区域之间的距离。

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

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

相关文章

  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息–实战

    Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息–实战 需要完成功能 借助redis Stream 数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本 IDE:IDEA 2022   1、读取库存数据 【Lua】   2、判断库存 【Lua】 3、扣…

    Redis 2023年4月10日
    00
  • 如何在 Redis 中设置和使用过期时间?

    如何在 Redis 中设置和使用过期时间? 在 Redis 中,可以使用过期时间来控制键的生命周期。当键的过期时间到期时,Redis 会自动删除该键。在本文中,我们将介绍如何在 Redis设置和使用过期时间的完整使用攻略,包括设置过期时间、获取过期时间、删除过期键等操作。 步骤1:连接 Redis 数据库 在 Python 中,我们可以使用 Redis-py…

    python 2023年5月12日
    00
  • redis集群 与spring-data-redis 集成

      所遇到的坑:必须使用如下的jedis 版本与spring-data-redis 版本,才能够达到集群效果 。1.7版本以前是不支持集群的 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> &l…

    Redis 2023年4月13日
    00
  • python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群   二. python 连接 redis cluster 集群   第三方库:     redis-py-cluster: 最近还在维护     rediscluster: 似乎很久没…

    Redis 2023年4月11日
    00
  • redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to specify //1  配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit   // 2  对大小写不敏感 # it in the usu…

    Redis 2023年4月16日
    00
  • 如何使用 Redis 的位图数据类型?

    以下是详细讲解如何使用 Redis 的位图数据类型的完整使用攻略。 Redis 位图简介 Redis 位图是一种特殊的字符串类型,可以用于存储二进制位。Redis 位图的特点如下: Redis 位图是基于字符串的,每个字符可以存储 8 个二进制位。 Redis 位图是可扩展的,可以动态增加或减少位数。 Redis 位图支持位运算,可以进行与、或、异或、非等操…

    python 2023年5月12日
    00
  • spring-data-redis版本冲突引发的问题

    1.昨天在maven build项目中发现有个问题,如下所示 java.lang.NoSuchMethodError: org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource.<init>(Lorg/springframework/cor…

    Redis 2023年4月12日
    00
  • 如何使用 Redis 的分布式锁来避免竞态条件?

    以下是详细讲解如何使用 Redis 的分布式锁来避免竞态条件的完整使用攻略。 Redis 分布式锁简介 Redis 是一种高性能键值存储数据库,支持多种结构和高级功能。其中,分布式锁是 Redis 的一个重要功能,可以用于避免竞态条件。Redis 分布式锁的特点如下: Redis 分布式锁是互斥的,同一时刻只有一个客户端可以持有锁。 Redis 分布式锁是重…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部