Geodista Redis

Geodista Redis
Redis inizia a supportare i tipi di dati geospaziali dalla versione 3.2.0. Questa è una delle caratteristiche uniche che Redis offre su altri negozi di dati. La struttura dei dati geospaziali può contenere coordinate di una determinata posizione. Con il ricco set di operazioni, è possibile interrogare luoghi e le loro coordinate in base a criteri diversi.

Ogni membro viene spinto in un set ordinato Redis a cui si fa riferimento da una chiave che consente di interrogare quegli elementi geospaziali in modo efficiente e in modo ordinato in un secondo momento. Uno dei migliori usi di questa struttura di dati è che puoi facilmente interrogare la distanza tra due geo-localizzazioni (membri) utilizzando il comando geodista introdotto da Redis. Questa sarà una guida dettagliata sul comando geodista, la sintassi e i suoi casi d'uso.

Calcolo della distanza

Redis usa la formula matematica di Haversine per calcolare le distanze per gli indici geospaziali che presuppone che la terra sia una sfera perfetta. Sappiamo tutti che la terra non è una sfera perfetta. Quindi, uno 0.Il 5% di errore può essere introdotto dal calcolo della distanza. Questo può essere ignorato per applicazioni come i social media, i piatti nelle vicinanze e ecc. Ma per le applicazioni critiche di errore, questo dovrebbe essere usato con cura.

Il comando geodista

Il comando geodista viene utilizzato per calcolare la distanza tra due membri memorizzati in una determinata chiave geospaziale. Questo comando accetta due parametri dei membri obbligatori e una chiave geospaziale (indice) che indica un set ordinato. La distanza viene restituita in metri (M). Facoltativamente, è possibile specificare anche l'unità. Supporta anche chilometri, miglia e piedi.

La sintassi del comando geodista è la seguente:

Geodista geospatial_index/key member_1 member_2 [m | Km | Ft | MI]

Restituisce la distanza come doppio valore. Il valore dipende dall'unità che hai specificato. Ogni volta che il comando incontra membri inesistenti o mancanti, restituisce null.

Caso d'uso: ottenere la distanza tra due attrazioni

Supponiamo che una società turistica abbia introdotto un'applicazione mobile per trovare i dettagli delle attrazioni in un determinato paese. L'applicazione mobile utilizza il Redis Data Store al suo backend per archiviare i dettagli delle attrazioni tra cui le loro coordinate geospaziali.

Hanno usato gli hash Redis per archiviare le informazioni di base relative alle attrazioni. Per la parte delle coordinate della geolocalizzazione, stanno utilizzando la struttura dei dati geospaziali Redis.

Creiamo un nuovo indice geospaziale che contiene due membri.

GEOADD ATTRAZIONI: NewYork 23.596920 67.104923 "Lazy Mountain" 134.694013 45.394022 "Sabra River"

Ora il "montagna pigra" E "Sabra River"I membri devono essere archiviati in un set ordinato a cui è riferito dalla chiave Attrazioni: NewYork.

Usiamo il comando geodista per calcolare la distanza tra i due membri sopra. Per impostazione predefinita, dovrebbe restituire la distanza in metri.

Attrazioni geodiste: NewYork "Lazy Mountain" "Sabra River"

Come puoi vedere, abbiamo specificato l'indice geospaziale come Attrazioni: NewYork. Successivamente, abbiamo i due membri come stringhe.

Come previsto, l'output viene restituito in metri. Il doppio tipo di dati è stato utilizzato per rappresentare la distanza.

Recuperare la distanza in chilometri

È possibile recuperare anche la distanza sopra in chilometri. Devi solo passare l'argomento opzionale 'km' come segue:

Attrazioni geodiste: NewYork "Lazy Mountain" "Sabra River" KM

Produzione

Recuperare la distanza in miglia

L'argomento "Mi" dovrebbe essere specificato per calcolare la distanza tra i membri dati in Miles.

Attrazioni geodiste: NewYork "Lazy Mountain" "Sabra River" MI

Produzione

Recuperare la distanza in piedi

Ogni volta che devi conoscere il numero di piedi da un membro all'altro, basta specificare l'unità come "ft'.

Attrazioni geodiste: NewYork "Lazy Mountain" "Sabra River" Ft

Produzione

Ogni volta che si specificano i membri non esistenti, il comando geodista dovrebbe restituire null. Specifichiamo due membri non esistenti come segue:

Attrazioni geodiste: NewYork "Lazy" "Sabra"

Produzione

Se la chiave specificata non esiste, il comando restituirà null.

Attrazioni geodiste: Washington "Lazy Mountain" "Sabra River" FT

Nell'esempio sopra, il Attrazioni: Washington La chiave non è disponibile. Quindi, l'output è nullo come mostrato nel seguente:

Conclusione

In sintesi, è stato introdotto il tipo di dati geospaziali Redis per contenere coordinate di geo-localizzazioni. Come accennato, i valori di longitudine e latitudine sono memorizzati per un determinato membro. Questo è rappresentato come un set ordinato nella memoria. Sono disponibili diversi comandi per operare su tipi di dati geospaziali. Il geodista è uno dei comandi utili che operano su indici geospaziali per restituire la distanza tra i membri specificati. Come discusso nella sezione Introduzione, la distanza viene restituita in metri per impostazione predefinita. Il comando geodista accetta argomenti opzionali per restituire la distanza in altre unità, come chilometri, piedi e miglia.