Redis GEORADIUSBYMEMBER命令

yizhihongxing

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日

相关文章

  • redis集群配置

    redis集群配置 1、三主三从redis集群配置 1、新建6个docker容器实例 ## –cluster-enabled yes 开启redis集群## –net host 使用宿主机的ip和端口 默认## –appendonly yes 开启持久化 docker run -d –name redis-node-1 –net host –pr…

    2023年4月9日
    00
  • redis数据库的数据导入到SQLServer数据库中

    1./. #!/usr/bin/python# -*-coding:utf-8-*- “””@author: yugengde@contact: yugengde@163.com@file : redis_sqlserver.py@time: 2017/11/11 16:50″””import redisimport pymssqlimport jsonfr…

    Redis 2023年4月12日
    00
  • Redis SINTERSTORE命令

    Redis SINTERSTORE命令 Redis中的SINTERSTORE命令用于获取多个集合的交集,并将结果集保存到一个新的集合中。SINTERSTORE命令的语法如下: SINTERSTORE destination key [key …] 其中destination是新集合的名称,key [key …]是要进行交集运算的原集合名称。如果只有一个k…

    Redis 2023年3月27日
    00
  • Redis布隆过滤器是什么?有什么作用?

    Redis布隆过滤器是一种基于内存的、高效的数据结构,可用于快速、准确地确定一个元素是否存在于大规模数据集中。本文将通过以下内容对Redis布隆过滤器进行详细讲解: Redis布隆过滤器的原理及其应用场景 Redis布隆过滤器的实现步骤 Redis布隆过滤器的代码示例 Redis布隆过滤器的原理及其应用场景 Redis布隆过滤器基于布隆过滤器(Bloom F…

    Redis 2023年3月21日
    00
  • Redis 向集群添加新节点

      1. 启动集群服务(向集群添加新节点,则说明,集群是已知的)。   2. 搭建将要添加到集群的节点     (1)以集群的方式对新添加的节点进行配置:redis.conf.     (2)启动节点实例服务.    3.集群管理 可参考  Redis cluster tutorial 官网指导文档,往往是最新的。 一、启动集群服务:【命令在集群服务器执行】…

    Redis 2023年4月11日
    00
  • Redis(五)——主从做读写分离原理与优化

    一、什么是主从复制 一主一从,一主多从 做读写分离(可以设置主写从读),做数据副本,扩展数据性能 一个maskter可以有多个slave,一个slave只能有一个master 数据流向是单向的,从master到slave 二、复制到配置 启动两个服务端: 示例:在阿里云服务器上创建两个redis服务端配置文件(注意配置文件中的端口不同),使用不同的配置文件启…

    Redis 2023年4月13日
    00
  • 通过Jedis操作Redis

      package com.yh; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.params.SetParams; import java…

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

    Redis PSYNC命令是用于在主从复制中进行部分重同步的命令,可以用来提高从节点的同步效率和可靠性。它分为完整重同步(full synchronization)和部分重同步(partial synchronization),主要用于从节点在断线后重新连接到主节点时,快速恢复数据同步的场景。 完整重同步 完整重同步是指从节点存在磁盘上的Redis快照文件和…

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