English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redis GEO

Redis GEO主要用于存储地理位置信息, и выполняет операции с хранящейся информацией, эта функция добавлена в версии Redis 3.2.

Методы операции GEO в Redis:

  • geoadd: добавляет координаты местоположения.

  • geopos:��取地理位置的坐标。

  • geodist: вычисляет расстояние между двумя местоположениями.

  • georadius: получает набор географических местоположений в заданном диапазоне, основываясь на координатах долготы и широты, предоставленных пользователем.

  • georadiusbymember: получит набор географических местоположений в заданном диапазоне, основываясь на определенном месте в наборе местоположений.

  • geohash: возвращает geohash значения для одного или нескольких объектов местоположения.

geoadd

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

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 следующий:

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 и 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>

    geohash

    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>