Datos básicosMovilidad

Búsqueda geoespacial

Encuentra los conductores, tiendas o dispositivos más cercanos en un radio o en un rectángulo, con posiciones en vivo actualizadas cada pocos segundos.

o búsquedas por rectángulo
Radio
unidades
km, mi, m, ft
actualización de posiciones
En vivo
Paso 1 de 4
Los conductores envían su posición

Cada actualización sustituye la posición anterior del conductor.

Sesión de ejemploplaying
# Los conductores envían su posición
hotkv> GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23
(integer) 0

Un recorrido animado con comandos reales de HotKV y respuestas de ejemplo. Haz clic en cualquier paso para saltar a él. Los comandos y las respuestas se quedan en inglés, tal como los escribes y los ves en HotKV.

El problema

Asignar a un pasajero el conductor más cercano, o a un cliente la tienda más próxima con stock, requiere una visión actualizada de miles de posiciones en movimiento y una respuesta en milisegundos. A una base de datos relacional con índices espaciales le cuesta soportar tantas actualizaciones por segundo.

Cómo lo resuelve HotKV

Las posiciones viven en un índice geoespacial. Cada conductor actualiza su propia posición cada pocos segundos con GEOADD, y GEOSEARCH devuelve a todos los que están dentro de un radio o un rectángulo, el más cercano primero, con su distancia. El mismo índice responde a las consultas del localizador de tiendas y de las zonas de reparto.

Paso a paso

Qué ocurre, comando a comando

  1. 01

    Los conductores envían su posición

    Cada actualización sustituye la posición anterior del conductor.

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

    Un pasajero pide un coche

    Encuentra los cinco conductores más cercanos en 3 km, el más cercano primero.

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

    Ofrece el viaje

    Bloquea al conductor para que dos pasajeros no puedan obtener el mismo coche.

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

    Distancia a la recogida

    Distancia entre dos miembros del índice.

    GEODIST drivers:berlin driver:17 driver:23 km
Dónde encaja

Escenarios reales

VTC y taxis

Los conductores cercanos se encuentran en milisegundos, y un bloqueo de la oferta evita las reservas duplicadas.

Plataformas de reparto

Los repartidores cercanos a un restaurante se asignan a medida que los pedidos están listos.

Localizadores de tiendas

Los clientes ven las tiendas más cercanas dentro de un rectángulo alrededor de la vista del mapa.

Integrado

Qué obtienes

Posiciones en vivo

GEOADD añade o actualiza miembros por longitud y latitud.

GEOADD

Búsqueda por radio y por rectángulo

Alrededor de un punto o de un miembro, ordenada por distancia y limitada por número.

GEOSEARCHGEOSEARCHSTORE

Distancias y posiciones

Entre miembros, en la unidad que elijas.

GEODISTGEOPOS

Sorted sets normales por debajo

Elimina miembros y cuéntalos con los comandos de sorted sets que ya conoces.

ZREMZCARD

Preguntas frecuentes

¿Cómo elimino a un conductor que se desconecta?

Un índice geoespacial es un sorted set, así que ZREM elimina el miembro.

¿Puedo buscar en un rectángulo?

Sí. GEOSEARCH BYBOX recibe un ancho y un alto alrededor de un punto o de un miembro.

¿Qué unidades se admiten?

Metros, kilómetros, pies y millas.

Casos de uso relacionados

Pruébalo con tu propia carga de trabajo

HotKV habla el protocolo de Redis, así que puedes apuntar un cliente que ya usas hacia él y ejecutar estos mismos comandos.