Базові даніМобільність

Геопросторовий пошук

Знаходьте найближчих водіїв, магазини чи пристрої в радіусі або прямокутнику, з живими позиціями, що оновлюються кожні кілька секунд.

або пошук у прямокутнику
Радіус
одиниці
км, миль, м, фт
оновлення позицій
Живі
Крок 1 з 4
Водії повідомляють позиції

Кожне оновлення замінює попередню позицію водія.

Приклад сесіїplaying
# Водії повідомляють позиції
hotkv> GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23
(integer) 0

Анімований покроковий розбір з реальними командами HotKV і прикладами відповідей. Натисніть будь-який крок, щоб перейти до нього. Команди та відповіді залишаються англійською, так само, як ви вводите й бачите їх у HotKV.

Проблема

Підбір пасажиру найближчого водія або клієнту найближчого магазину із запасом потребує свіжого бачення тисяч рухомих позицій і відповіді за мілісекунди. Реляційна база даних із просторовими індексами не справляється з такою кількістю оновлень на секунду.

Як це вирішує HotKV

Позиції живуть у геопросторовому індексі. Кожен водій оновлює власну позицію кожні кілька секунд через GEOADD, а GEOSEARCH повертає всіх у радіусі чи прямокутнику, найближчих першими, з їхньою відстанню. Той самий індекс відповідає на запити пошуку магазинів і зон доставки.

Крок за кроком

Що відбувається, команда за командою

  1. 01

    Водії повідомляють позиції

    Кожне оновлення замінює попередню позицію водія.

    GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23
  2. 02

    Пасажир просить авто

    Знайдіть п'ятьох найближчих водіїв у межах 3 км, найближчих першими.

    GEOSEARCH drivers:berlin FROMLONLAT 13.4000 52.5190 BYRADIUS 3 km ASC COUNT 5 WITHDIST
  3. 03

    Запропонуйте поїздку

    Заблокуйте водія, щоб двоє пасажирів не отримали те саме авто.

    SET offer:driver:17 rider:42 NX EX 15
  4. 04

    Відстань до посадки

    Відстань між двома членами індексу.

    GEODIST drivers:berlin driver:17 driver:23 km
Де це доречно

Реальні сценарії

Виклик таксі

Найближчих водіїв знаходять за мілісекунди, а блокування пропозиції не дає подвійного бронювання.

Платформи доставки

Кур'єри поруч із рестораном підбираються, коли замовлення готові.

Пошук магазинів

Клієнти бачать найближчі магазини в прямокутнику навколо видимої частини карти.

Вбудовано

Що ви отримуєте

Живі позиції

GEOADD додає чи оновлює членів за довготою й широтою.

GEOADD

Пошук у радіусі та прямокутнику

Навколо точки чи члена, відсортовано за відстанню, обмежено кількістю.

GEOSEARCHGEOSEARCHSTORE

Відстані та позиції

Між членами, в одиниці на ваш вибір.

GEODISTGEOPOS

Під капотом звичайні відсортовані множини

Видаляйте членів і рахуйте їх знайомими командами відсортованих множин.

ZREMZCARD
Довідка:GEOADDGEOSEARCHGEODIST

Поширені запитання

Як видалити водія, що вийшов офлайн?

Геопросторовий індекс є відсортованою множиною, тож ZREM видаляє члена.

Чи можна шукати в прямокутнику?

Так. GEOSEARCH BYBOX приймає ширину й висоту навколо точки чи члена.

Які одиниці підтримуються?

Метри, кілометри, фути й милі.

Пов'язані сценарії використання

Спробуйте на власному навантаженні

HotKV розмовляє протоколом Redis, тож ви можете направити на нього наявний клієнт і виконувати ті самі команди.