English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Redis GEO主要用于存储地理位置信息, и выполняет операции с хранящейся информацией, эта функция добавлена в версии Redis 3.2.
Методы операции GEO в Redis:
geoadd: добавляет координаты местоположения.
geopos:��取地理位置的坐标。
geodist: вычисляет расстояние между двумя местоположениями.
georadius: получает набор географических местоположений в заданном диапазоне, основываясь на координатах долготы и широты, предоставленных пользователем.
georadiusbymember: получит набор географических местоположений в заданном диапазоне, основываясь на определенном месте в наборе местоположений.
geohash: возвращает geohash значения для одного или нескольких объектов местоположения.
geoadd используется для хранения指定的地理空间位置, он может добавить один или несколько координат долготы (широта), широты (долгота) и названия места (участник) в указанный ключ.
Грамматический формат geoadd是这样的:
GEOADD ключ широта долгота участник [широта долгота участник ...]
В следующем примере ключом является Sicily, а Palermo и Catania - это имена местоположений:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEODIST Sicily Palermo Catania "166274.1516" redis> GEORADIUS Sicily 15 37 100 km 1) "Catania" redis> GEORADIUS Sicily 15 37 200 km 1) "Palermo" 2) "Catania" redis>
geopos используется для возврата всех指定ных по имени (member) местоположений (долготы и широты) из заданного ключа, для не существующих возвращает nil.
Синтаксис geopos следующий:
GEOPOS key member [member ...]
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEOPOS Sicily Palermo Catania NonExisting 1) 1) "13.36138933897018433" "38.11555639549629859" "15.08726745843887329" 2) "37.50266842333162032" 3) (nil) redis>
geodist используется для возврата расстояния между двумя заданными местоположениями.
Синтаксис geodist следующий:
GEODIST key member1 member2 [m|km|ft|mi]
member1 member2 - это два географических местоположения.
Последний параметр единицы измерения расстояния:
m: метры, mặc định.
km: километры.
mi: мили.
ft: футы.
Рассчитываем расстояние между Palermo и Catania:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEODIST Sicily Palermo Catania "166274.1516" redis> GEODIST Sicily Palermo Catania km "166.2742" redis> GEODIST Sicily Palermo Catania mi "103.3182" redis> GEODIST Sicily Foo Bar (nil) redis>
Команда georadius возвращает элементы, содержащие ключи с местоположением, которые находятся на расстоянии не более заданного максимального расстояния от заданного центра координат.
Команды georadiusbymember и GEORADIUS аналогичны, они могут находить элементы, находящиеся в заданном диапазоне, но центр georadiusbymember определяется заданным элементом местоположения, а не координатами долготы и широты.
Синтаксис georadius и georadiusbymember таков:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
Описание параметров:
m: метры, mặc định.
km: километры.
mi: мили.
ft: футы.
WITHDIST: Возвращает расстояние между позиционными элементами и центром.
WITHCOORD: Возвращает координаты позиционных элементов.
WITHHASH: Возвращает значения позиционных элементов в виде有序集合的分值, закодированных с помощью оригинального geohash. Этот параметр主要用于 низкоуровневых приложений или отладки и не играет значительной роли на практике.
COUNT: Ограничивает количество возвращаемых записей.
ASC: Результаты поиска сортируются по расстоянию от ближайшего к дальнейшему.
DESC: Результаты поиска сортируются по расстоянию от дальнейшего к ближайшему.
Пример georadius:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUS Sicily 15 37 200 km WITHDIST "Palermo" "190.4424" 2) 1) "Catania" 2) "56.4413" redis> GEORADIUS Sicily 15 37 200 km WITHCOORD "Palermo" "13.36138933897018433" "38.11555639549629859" 2) 1) "Catania" "15.08726745843887329" 2) "37.50266842333162032" redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD "Palermo" "190.4424" "13.36138933897018433" "38.11555639549629859" 2) 1) "Catania" 2) "56.4413" 3) 1) "15.08726745843887329" 2) "37.50266842333162032" redis>
Пример georadiusbymember:
redis> GEOADD Sicily 13.583333 37.316667 "Agrigento" (integer) 1 redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km 1) "Agrigento" 2) "Palermo" redis>
Redis GEO использует географический хэш для сохранения координат地理位置.
GEOHASH используется для получения географического хэша одного или нескольких элементов.
Географический хэш имеет следующий формат:
GEOHASH ключ элемент [элемент ...]
Пример:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEOHASH Sicily Palermo Catania 1) "sqc8b49rny0" 2) "sqdtr74hyu0" redis>