Войти Регистрация
Data base

254. Три ближайших свободных водителя в радиусе 2 км

Лёгкая

Redis · Redis 7.4.11

В Ситимобиле Redis был основным хранилищем сервиса сессий и координат водителей: точки добавляли и искали GEO-командами. Такой поиск идёт на каждый заказ, поэтому ответ нужен одной командой.

В ключе drivers:free — свободные водители, добавленные через GEOADD drivers:free <долгота> <широта> <id>. Заказ создан у точки с долготой 37.6176 и широтой 55.7558.

Верните id не более трёх водителей в радиусе 2 км от точки заказа, от ближнего к дальнему. Ответ — результат последней команды.

В работе: Подбор исполнителя в такси и доставке, «ближайшие пункты выдачи», поиск самоката рядом.

Как проверяем Движка Redis в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
GEOGEOSEARCHрадиуссортировка по расстоянию

Источник: кейс Ситимобила: переезд на Redis Cluster, 2020. Условие пересказано своими словами.

Какая команда вернёт трёх ближайших водителей в радиусе 2 км по возрастанию расстояния?

  • GEOSEARCH … FROMLONLAT 37.6176 55.7558 BYRADIUS 2 km ASC COUNT 3
  • То же, но COUNT 3 ANY
  • BYRADIUS 2 m
  • FROMLONLAT 55.7558 37.6176
  • ZRANGE drivers:free 0 2