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日

相关文章

  • (一)redis源码阅读

    目录 1. srand()和rand()函数以及随机数种子 2. 守护进程及pid文件 3. 初始化服务器时的信号处理 4. 在程序coredump时记录堆栈信息StackTrace 5. 线程主循环 6. 时间戳 7. 全局时间缓存 8. run_with_period 宏 9. /proc/getpid()/stat 10. Redis Command …

    Redis 2023年4月12日
    00
  • Redis分布式锁这样用,有坑?

    分享一个在工作中,Redis分布式锁的坑,很多人都是这样用的 背景 在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate、Redisson、RedisLockRegistry都行,公司的项目中,使用的是Redisson,一般你会怎么用?看看下面的代码,是不是就是你的写法 String lockKey = “f…

    Redis 2023年4月16日
    00
  • Java连接Redis,存储对象获取对象()byte和json),连接池

    Jedis连接Redis,Lettuce连接Redis Jedis连接Redis 1. 创建maven项目 2. 引入依赖 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId&gt…

    Redis 2023年4月12日
    00
  • Zabbix 监控PHP-FTPM、Tomcat、Redis应用

    一、zabbix 监控 PHP-FPM应用实战Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP-FPM呢,我们说PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHP FastCGI管理器,它提供了更好的P…

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

    Redis ZADD命令详解 命令概述 ZADD命令用于向有序集合(sorted set)中添加一个或多个成员,或者更新已存在成员的分数。 命令语法 ZADD key [NX|XX] [CH] [INCR] score member [score member …] 命令参数 key:有序集合的键名。 NX|XX:可选参数,表示只在有序集合中不存在成员时…

    Redis 2023年3月27日
    00
  • redis分布式锁工具类

    目录 (1)需要导入的包 (2)JedisUtil类 (3)jedisPool配置 (4)使用举例 (1)需要导入的包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version&g…

    Redis 2023年4月12日
    00
  • redis setNx原子锁

    https://github.com/suqi/rlock/blob/master/rlock.py 保持逻辑并发情况不产生多次结果 常用于下单,钱包,抢购,秒杀等场景  1 LOCK_TIMEOUT = 3 2 lock = 0 3 lock_timeout = 0 4 lock_key = ‘lock.foo’ 5 6 # 获取锁 7 while loc…

    Redis 2023年4月9日
    00
  • 如何保障mysql和redis之间的数据一致性

    在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。Redis缓存数据的加载可以分为懒加载和主动加载两种模式,下面分别介绍在这两种模式下的数据一致性如何处理。 懒加载 读取缓存步骤一般没有什么问题,但是一旦涉及到…

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