Données de baseMobilité

Recherche géospatiale

Trouvez les chauffeurs, magasins ou appareils les plus proches dans un rayon ou un rectangle, avec des positions en direct mises à jour toutes les quelques secondes.

ou rectangle
Rayon
unités
km, mi, m, ft
mises à jour des positions
En direct
Étape 1 sur 4
Les chauffeurs envoient leur position

Chaque mise à jour remplace la position précédente du chauffeur.

Session d’exempleplaying
# Les chauffeurs envoient leur position
hotkv> GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23
(integer) 0

Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.

Le problème

Associer un passager au chauffeur le plus proche, ou un client au magasin le plus proche qui a du stock, demande une vue à jour de milliers de positions en mouvement et une réponse en quelques millisecondes. Une base de données relationnelle avec des index spatiaux peine à suivre autant de mises à jour par seconde.

Comment HotKV s'en charge

Les positions vivent dans un index géospatial. Chaque chauffeur met à jour sa position toutes les quelques secondes avec GEOADD, et GEOSEARCH renvoie tous ceux qui se trouvent dans un rayon ou un rectangle, du plus proche au plus éloigné, avec leur distance. Le même index répond aux requêtes de localisation de magasins et de zones de livraison.

Étape par étape

Ce qui se passe, commande par commande

  1. 01

    Les chauffeurs envoient leur position

    Chaque mise à jour remplace la position précédente du chauffeur.

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

    Un passager demande une voiture

    Trouvez les cinq chauffeurs les plus proches dans un rayon de 3 km, du plus proche au plus éloigné.

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

    Proposer la course

    Verrouillez le chauffeur pour que deux passagers ne puissent pas obtenir la même voiture.

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

    Distance jusqu'à la prise en charge

    La distance entre deux membres de l'index.

    GEODIST drivers:berlin driver:17 driver:23 km
Où cela s'applique

Scénarios concrets

VTC et taxis

Les chauffeurs proches sont trouvés en quelques millisecondes, et un verrou sur l'offre empêche la double réservation.

Plateformes de livraison

Les coursiers proches d'un restaurant sont associés aux commandes dès qu'elles sont prêtes.

Localisateurs de magasins

Les clients voient les magasins les plus proches dans un rectangle autour de la vue de la carte.

Intégré

Ce que vous obtenez

Positions en direct

GEOADD ajoute ou met à jour des membres par longitude et latitude.

GEOADD

Recherche par rayon et rectangle

Autour d'un point ou d'un membre, triée par distance, limitée en nombre.

GEOSEARCHGEOSEARCHSTORE

Distances et positions

Entre membres, dans l'unité de votre choix.

GEODISTGEOPOS

De simples sorted sets en dessous

Supprimez et comptez les membres avec les commandes de sorted sets que vous connaissez.

ZREMZCARD

Questions fréquentes

Comment retirer un chauffeur qui se déconnecte ?

Un index géospatial est un sorted set, et ZREM supprime donc le membre.

Puis-je chercher dans un rectangle ?

Oui. GEOSEARCH BYBOX prend une largeur et une hauteur autour d'un point ou d'un membre.

Quelles unités sont prises en charge ?

Mètres, kilomètres, pieds et miles.

Cas d'usage associés

Essayez-le sur votre propre charge de travail

HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.