Такси и вызов машин
Ближайшие водители находятся за миллисекунды, а блокировка предложения исключает двойное бронирование.
Находите ближайших водителей, магазины или устройства в радиусе или прямоугольнике с живыми позициями, обновляемыми каждые несколько секунд.
Каждое обновление заменяет прежнюю позицию водителя.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
Подбор пассажиру ближайшего водителя или клиенту ближайшего магазина с товаром требует свежей картины тысяч движущихся позиций и ответа за миллисекунды. Реляционная база данных с пространственными индексами не справляется с таким числом обновлений в секунду.
Позиции хранятся в геопространственном индексе. Каждый водитель обновляет свою позицию каждые несколько секунд через GEOADD, а GEOSEARCH возвращает всех в радиусе или прямоугольнике, начиная с ближайшего, вместе с расстоянием. Тот же индекс отвечает на запросы поиска магазинов и зон доставки.
Каждое обновление заменяет прежнюю позицию водителя.
GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23Найдите пять ближайших водителей в пределах 3 км, начиная с ближайшего.
GEOSEARCH drivers:berlin FROMLONLAT 13.4000 52.5190 BYRADIUS 3 km ASC COUNT 5 WITHDISTЗаблокируйте водителя, чтобы две поездки не достались одной машине.
SET offer:driver:17 rider:42 NX EX 15Расстояние между двумя участниками индекса.
GEODIST drivers:berlin driver:17 driver:23 kmБлижайшие водители находятся за миллисекунды, а блокировка предложения исключает двойное бронирование.
Курьеры рядом с рестораном подбираются, когда заказы готовы.
Клиенты видят ближайшие магазины в прямоугольнике вокруг видимой области карты.
GEOADD добавляет или обновляет участников по долготе и широте.
GEOADDВокруг точки или участника, сортировка по расстоянию, ограничение по количеству.
GEOSEARCHGEOSEARCHSTOREМежду участниками, в выбранной вами единице.
GEODISTGEOPOSУдаляйте участников и считайте их знакомыми командами отсортированных множеств.
ZREMZCARDГеопространственный индекс - это отсортированное множество, поэтому ZREM удаляет участника.
Да. GEOSEARCH BYBOX принимает ширину и высоту вокруг точки или участника.
Метры, километры, футы и мили.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.