Redis GEO
Redis GEO в основном используется для хранения информации о географическом местоположении и выполнения операций с сохранённой информацией. Эта функция была добавлена в Redis версии 3.2.
Методы работы с Redis GEO включают:
- geoadd: Добавить координаты географического местоположения.
- geopos: Получить координаты географического местоположения.
- geodist: Рассчитать расстояние между двумя местоположениями.
- georadius: Получить набор географических местоположений в пределах указанного диапазона на основе координат долготы и широты, заданных пользователем.
- georadiusbymember: Получить набор географических местоположений в пределах указанного диапазона на основе местоположения, сохранённого в наборе местоположений.
- geohash: возвращает значение geohash для одного или нескольких объектов местоположения.
geoadd
geoadd используется для сохранения указанных геопространственных позиций. Он может добавить одну или несколько долгот, широт и названий местоположений (элементов) в указанный ключ.
Синтаксис geoadd следующий:
GEOADD key longitude latitude member [longitude latitude member ...]
В следующем примере ключ — Sicily, а Palermo и Catania — названия местоположений:
Пример
(целое число) 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
geopos используется для возврата позиций (долготы и широты) всех указанных имён (элементов) из заданного ключа. Для несуществующих возвращается nil.
Формат синтаксиса geopos следующий:
GEOPOS key member [member ...]
Пример
(целое число) 2
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "15.08726745843887329"
2) "37.50266842333162032"
3) (nil)
redis>
geodist
geodist используется для возврата расстояния между двумя заданными местоположениями.
Формат синтаксиса geodist следующий:
GEODIST key member1 member2 [m|km|ft|mi]
member1 и member2 — это две географические локации.
Пояснение к последнему параметру единицы расстояния:
- m: метры, единица по умолчанию.
- km: километры.
- mi: мили.
- ft: футы. Вычислите расстояние между Palermo и Catania:
Пример
(целое число) 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 и 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: метры, единица по умолчанию.
- km: километры.
- mi: мили.
- ft: футы.
- WITHDIST: при возврате элементов местоположения также возвращает расстояние между элементом местоположения и центром.
- WITHCOORD: также возвращает долготу и широту элемента местоположения.
- WITHHASH: возвращает значение score элемента местоположения в отсортированном множестве после исходного geohash-кодирования в виде 52-битного целого числа со знаком. Эта опция в основном используется для низкоуровневых приложений или отладки, и её практическое применение ограничено.
- COUNT ограничивает количество возвращаемых записей.
- ASC: сортирует результаты поиска по расстоянию от ближних к дальним.
- DESC: сортировать результаты поиска от дальних к ближним.
Пример georadius:
Пример
(целое число) 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>
Пример georadiusbymember:
Пример
(целое число) 1
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(целое число) 2
redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"
redis>
geohash
Redis GEO использует geohash для сохранения координат географических местоположений.
geohash используется для получения значения geohash одного или нескольких элементов местоположения.
Формат синтаксиса geohash следующий:
GEOHASH key member [member ...]
Пример:
Пример
(целое число) 2
redis> GEOHASH Sicily Palermo Catania
1) "sqc8b49rny0"
2) "sqdtr74hyu0"
redis>