Redis · Redis 7.4.11
В Ситимобиле Redis был основным хранилищем сервиса сессий и координат водителей: точки добавляли и искали GEO-командами. Такой поиск идёт на каждый заказ, поэтому ответ нужен одной командой.
В ключе drivers:free — свободные водители, добавленные через GEOADD drivers:free <долгота> <широта> <id>. Заказ создан у точки с долготой 37.6176 и широтой 55.7558.
Верните id не более трёх водителей в радиусе 2 км от точки заказа, от ближнего к дальнему. Ответ — результат последней команды.
В работе: Подбор исполнителя в такси и доставке, «ближайшие пункты выдачи», поиск самоката рядом.
Источник: кейс Ситимобила: переезд на 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