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

     Redis需要和其他数据库(例如mySQL等)配合使用吗?还是可以单独使用? 单独使用是可以的,更多的肯定是与数据库使用,对于完整的业务来说,是要和其他数据库搭配使用的 还是要看具体场景和业务需求,如果和其他数据库结合的话,还是作为缓存的情况比较多;   1.引入maven依赖 <!– https://mvnrepository.com/artif…

    Redis 2023年4月10日
    00
  • Redis MSETNX命令

    Redis MSETNX命令详解 Redis MSETNX命令是Redis的一个字符串操作命令,用于同时设置多个不重复的key-value键值对,当且仅当所有key都不存在时,才可以一次性进行设置。 MSETNX命令的基本语法如下: MSETNX key1 value1 key2 value2 … keyN valueN 其中,key1到keyN为要设置…

    Redis 2023年3月27日
    00
  • Redis WATCH命令

    Redis WATCH命令是一种实现事务的机制,它可以对一个或多个关键字进行监控,如果一个关键字在监控期间发生了改变,那么整个事务就会被取消。WATCH命令需要和MULTI、EXEC、DISCARD一起使用。在使用WATCH监控一个关键字时,Redis会将该关键字的值复制一份用于监控,如果该关键字在事务开始前已经被更新,那么该事务就会失败。 一般来说,WAT…

    Redis 2023年3月27日
    00
  • Redis25:redis的其它模块:队列、位图、HyperLogLog、布隆过滤器、GeoHash

    延时队列 实现队列的一种简单的方式:用zset,其中的score就是剩余时间。 还有一种实现简单队列的方式就是用redis中的list,可以用阻塞读命令blpop、brpop,这样在读不到数据时就会立即进入休眠状态,然后一旦有数据就会醒过来,降低延迟。如果用普通的命令rpush、lpush、lpop、rpop,取不到数据时应该手动设置休眠。注意如果一个读线程…

    Redis 2023年4月11日
    00
  • 【进阶篇】Redis实战之Jedis使用技巧详解

    一、摘要 在上一篇文章中,我们详细的介绍了 redis 的安装和常见的操作命令,以及可视化工具的介绍。 刚知道服务端的操作知识,还是远远不够的,如果想要真正在项目中得到应用,我们还需要一个 redis 的客户端,然后将其集成到项目中,让程序自动根据我们的业务需要自动处理。 基于 redis 开放的通信协议,大神们纷纷开发了各种语言的 redis 客户端,有 …

    Redis 2023年4月9日
    00
  • redis集合sAdd写入不进去问题之一

    在往redis的一个集合key中 sAdd 写入数据时,发现怎么都写不进去, sMembers 也拉不出来数据,结果是false; 原因: 结果发现这个 key 集合的 Type 类型是 string字符串类型,而不是 set 集合类型,怪不得写不进去,            可能是其他人误用了这个key, 写入了string类型数据 比如别人用 $redi…

    Redis 2023年4月9日
    00
  • 如何在 Redis 中实现分布式缓存?

    以下是详细讲解如何在 Redis 中实现分布式缓存的完整使用攻略。 Redis 分布式缓存简介 Redis 分布式缓存是一种常用的缓存技术,可以用于提高系统的能响应速度。Redis 分布式缓存的特点如下: Redis 分布式缓存是基于 Redis 的缓存技术实现。 Redis 分布式缓存可以通过多个 Redis 节点实现数据的分布式存储。 Redis 分布式…

    python 2023年5月12日
    00
  • Swoft2.x 小白学习笔记 (二) — mysql、redis

    介绍swoft中   1、mysql、   2、Redis   一、mysql使用:   1、配置,在 app\bean.php文件中 ‘db’ => [ ‘class’ => Database::class, ‘dsn’ => ‘mysql:dbname=webdemo;host=localhost’, ‘username’ => …

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