非常教程

Redis参考手册

Geo

georadius

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

自3.2.0起可用。

时间复杂度: O(N + log(M))其中N是由中心和半径界定的圆形区域的边界框内的元素的数量,M 是索引内的项目的数量。

使用 GEOADD 返回填充了地理空间信息的已排序集合的成员,这些位于由中心位置指定的区域的边界内,并且与中心的最大距离(半径)一致。

本手册页还涵盖了GEORADIUS_ROGEORADIUSBYRANGE_RO变种(参见下面的更多信息部分)。

此命令的常见用例是检索指定点附近的地理空间项目,并且不超过指定数量的米(或其他单位)。例如,这允许向附近的应用程序的移动用户建议位置。

半径以下列单位之一指定:

  • m 为米。
  • km 为千米。
  • mi 为英里。
  • ft 为英尺。

该命令有选择地使用以下选项返回附加信息:

  • WITHDIST:还要返回指定中心返回物品的距离。距离以与指定为命令的半径参数的单位相同的单位返回。
  • WITHCOORD:还返回匹配项目的经度,纬度坐标。
  • WITHHASH:还以52位无符号整数的形式返回项目的原始 geohash 编码的有序集合分数。这只对低级别的黑客或调试很有用,对于普通用户来说这很有趣。

该命令的默认设置是返回未排序的项目。使用以下两个选项可以调用两种不同的排序方法:

  • ASC:将返回的项目从最近的到最远的,相对于中心排序。
  • DESC:从最远到最近的相对于中心的返回项目排序。

默认情况下会返回所有匹配的项目。通过使用 COUNT <count>选项,可以将结果限制为前 N 个匹配项。但是请注意,在内部,命令需要执行与匹配指定区域的项目数量成比例的努力,因此,COUNT即使只返回几个结果,使用非常小的选项查询非常大的区域也可能会很慢。另一方面,COUNT如果通常只使用第一个结果,则可以成为减少带宽使用的非常有效的方法。

返回值

阵列回复,具体为:

  • 没有WITH指定任何选项,该命令只返回一个线性数组,如“纽约”,“米兰”,“巴黎”。
  • 如果WITHCOORDWITHDIST或者WITHHASH指定了选项,该命令将返回阵列,其中每个子阵列表示单个项目的阵列。

当附加信息作为每个项目的数组数组返回时,子数组中的第一项始终是返回项目的名称。其他信息按以下顺序作为子数组的连续元素返回。

1. 与中心的距离作为浮点数,与半径中指定的单位相同。

2. geohash 整数。

3. 坐标作为两个项目的 x,y 数组(经度,纬度)。

例如,命令GEORADIUS Sicily 15 37 200 km WITHCOORD WITHDIST将以下列方式返回每个项目:

["Palermo","190.4424",["13.361389338970184","38.115556395496299"]]

只读变量

由于 GEORADIUS 和 GEORADIUSBYMEMBER 有一个STORESTOREDIST选择,他们在技术上标记为在 Redis 的命令表写入命令。因为这个原因,只读从属会标记它们,即使连接处于只读模式,Redis 集群从属也会将它们重定向到主实例(请参阅 Redis 集群的 READONLY 命令)。

打破与过去的兼容性被认为是被拒绝的,至少对于 Redis 4.0 来说是这样,所以添加了两个只读的命令变体。他们完全像原来的命令,但拒绝STORESTOREDIST选项。这两个变量被称为GEORADIUS_ROGEORADIUSBYMEMBER_RO,并能安全地从设备中使用。

这两个命令分别在 Redis 3.2.10 和 Redis 4.0.0 中引入。

例子

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUS Sicily 15 37 200 km WITHDIST 1) 1) "Palermo" 2) "190.4424" 2) 1) "Catania" 2) "56.4413" redis> GEORADIUS Sicily 15 37 200 km WITHCOORD 1) 1) "Palermo" 2) 1) "13.36138933897018433" 2) "38.11555639549629859" 2) 1) "Catania" 2) 1) "15.08726745843887329" 2) "37.50266842333162032" redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD 1) 1) "Palermo" 2) "190.4424" 3) 1) "13.36138933897018433" 2) "38.11555639549629859" 2) 1) "Catania" 2) "56.4413" 3) 1) "15.08726745843887329" 2) "37.50266842333162032"

Redis

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值( value )可以是 字符串( String ), 哈希(Map),列表(list),集合( sets ) 和 有序集合( sorted sets )等类型。

主页 https://redis.io/
源码 https://github.com/antirez/redis
发布版本 4.0.2

Redis目录

1.集合 | Cluster
2.连接 | Connection
3.Geo
4.Hashes
5.HyperLogLog
6.键 | Keys
7.列表 | Lists
8.Pub/Sub
9.脚本 | Scripting
10.服务器 | Server
11.设定 | Sets
12.排序集 | Sorted Sets
13.字符串 | Strings
14.事务 | Transactions
15.Redis Dump 命令
16.Redis DEL 命令
17.Redis 键(key)
18.Redis 命令
19.Redis 配置
20.Redis 简介
21.Redis RANDOMKEY 命令
22.Redis TTL 命令
23.Redis Pttl 命令
24.Redis PERSIST 命令
25.Redis Move 命令
26.Redis PEXPIREAT 命令
27.Redis Keys 命令
28.Redis Expireat 命令
29.Redis Expire 命令
30.Redis EXISTS 命令
31.Redis Mget 命令
32.Redis Getbit 命令
33.Redis Getset 命令
34.Redis Getrange 命令
35.Redis Get 命令
36.Redis SET 命令
37.Redis 字符串(String)
38.Redis Type 命令
39.Redis Renamenx 命令
40.Redis Rename 命令
41.Redis Incrby 命令
42.Redis Incr 命令
43.Redis Psetex 命令
44.Redis Msetnx 命令
45.Redis Mset 命令
46.Redis Strlen 命令
47.Redis Setrange 命令
48.Redis Setnx 命令
49.Redis Setex 命令
50.Redis Setbit 命令
51.Redis Hincrby 命令
52.Redis Hgetall 命令
53.Redis Hget 命令
54.Redis Hexists 命令
55.Redis Hdel 命令
56.Redis 哈希(Hash)
57.Redis Append 命令
58.Redis Decrby 命令
59.Redis Decr 命令
60.Redis Incrbyfloat 命令
61.Redis Blpop 命令
62.Redis 列表(List)
63.Redis Hvals 命令
64.Redis Hsetnx 命令
65.Redis Hset 命令
66.Redis Hmset 命令
67.Redis Hmget 命令
68.Redis Hlen 命令
69.Redis Hkeys 命令
70.Redis Hincrbyfloat 命令
71.Redis Lrem 命令
72.Redis Lrange 命令
73.Redis Lpushx 命令
74.Redis Lpush 命令
75.Redis Lpop 命令
76.Redis Llen 命令
77.Redis Linsert 命令
78.Redis Lindex 命令
79.Redis Brpoplpush 命令
80.Redis Brpop 命令
81.Redis Sdiff 命令
82.Redis Scard 命令
83.Redis Sadd 命令
84.Redis 集合(Set)
85.Redis Rpushx 命令
86.Redis Rpush 命令
87.Redis Rpoplpush 命令
88.Redis Rpop 命令
89.Redis Ltrim 命令
90.Redis Lset 命令
91.Redis Sunion 命令
92.Redis Srem 命令
93.Redis Srandmember 命令
94.Redis Spop 命令
95.Redis Smove 命令
96.Redis Smembers 命令
97.Redis Sismember 命令
98.Redis Sinterstore 命令
99.Redis Sinter 命令
100.Redis Sdiffstore 命令