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必须注意的慢查询问题

    今天解析服务在查询Redis的Set数据过程中抛出timeout exception,产生异常的方法是: db.SetMembers(key); 这个API返回结果是指定set内的所有kv对象; 解决这个问题的方法仅仅是使用另一个api: db.SetScan(key); 这个API也是返回set内所有的kv对象。 从功能上来说这2个API是一样的,但是其返…

    Redis 2023年4月12日
    00
  • redis 参数详解

    #是否作为守护进程运行 yes 或者 no daemonize yes #监听IP,redis一般监听127.0.0.1 网段访问,集群模式需要指定IP地址。 bind 192.168.1.115 # 当 Redis 以守护进程的方式运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid # 可配置到其他地址,当运行多个 re…

    Redis 2023年4月13日
    00
  • redis list 清空记录小技巧

    redis中的list操作命令中删除指定key中的所有记录命令: ltrim key 1 0   即 ltrim key start end 中的start要比end大即可,数值且都为正数。

    Redis 2023年4月10日
    00
  • redis配置文件中slave-serve-stale-data的解释

    redis.conf文件中可以看到slave-serve-stale-data这个参数,作用是什么? 原文解释: # When a slave loses its connection with the master, or when the replication # is still in progress, the slave can act in t…

    Redis 2023年4月9日
    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 ZRANGEBYSCORE命令

    Redis ZRANGEBYSCORE命令用于获取有序集合中指定分数范围内的元素。以下是详细的使用方法和实例说明: 使用方法: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 参数说明: key:有序集合的键 min:分数范围的最小值 max:分数范围的最大值 WITHSCORES:可选…

    Redis 2023年3月27日
    00
  • redis-cluster的实例动态调整内存

    当redis.conf中的最大内存配置为10G的时候,恰好程序已经写满了,但是物理主机是有内存的, 此时可以通过config set xxxx xxxx 来设置实例的内存大小,而不需要重启实例。   获取当前最大内存的大小: config get maxmemory   修改内存大小: config set maxmemory 32212254720   有…

    Redis 2023年4月11日
    00
  • redis hset hmset过期时间

    hmset m k v  127.0.0.1:6379> hset m k v (integer) 1 127.0.0.1:6379> hget m k “v” 127.0.0.1:6379> expire m 30 (integer) 1 127.0.0.1:6379> ttl m (integer) 24 127.0.0.1:63…

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