Redis Geodist

Redis Geodist
Redis begynner å støtte geospatiale datatyper fra versjon 3.2.0. Dette er en av de unike funksjonene som Redis tilbyr i løpet av de andre databutikkene. Den geospatiale datastrukturen kan inneholde koordinater for et gitt sted. Med det rike operasjonssettet er det mulig å spørre om sted og koordinater basert på forskjellige kriterier.

Hvert medlem skyves inn i et Redis -sortert sett referert av en nøkkel som lar deg spørre de geospatiale gjenstandene effektivt og på en bestilt måte på et senere tidspunkt. En av de beste bruken av denne datastrukturen er at du enkelt kan spørre avstanden mellom to geo-lokasjoner (medlemmer) ved å bruke geodistkommandoen introdusert av Redis. Dette vil være en detaljert guide til geodistkommandoen, syntaks og brukssaker.

Avstandsberegning

Redis bruker den matematiske formelen fra Haversine for å beregne avstandene for geospatiale indekser som antar at jorden er en perfekt sfære. Vi vet alle at jorden ikke er en perfekt sfære. Så, en 0.5% feil kan innføres ved avstandsberegningen. Dette kan ignoreres for applikasjoner som sosiale medier, nærliggende stedfinner og etc. Men for feilkritiske applikasjoner, bør dette brukes med omhu.

Geodistkommandoen

Geodist -kommandoen brukes til å beregne avstanden mellom to medlemmer som er lagret ved en gitt geospatial nøkkel. Denne kommandoen godtar to obligatoriske medlemsparametere og en geospatial nøkkel (indeks) som peker på et sortert sett. Avstanden returneres i meter (m). Eventuelt kan du også spesifisere enheten. Den støtter kilometer, miles og føtter også.

Syntaksen til geodistkommandoen er som følger:

Geodist geospatial_index/nøkkelmedlem_1 medlem_2 [M | Km | Ft | Mi]

Den returnerer avstanden som en dobbel verdi. Verdien avhenger av enheten du har spesifisert. Hver gang kommandoen møter ikke-eksisterende eller manglende medlemmer, returnerer den null.

Bruk sak - Få avstanden mellom to attraksjoner

La oss anta at et turistfirma introduserte en mobilapplikasjon for å finne detaljene om attraksjoner i et gitt land. Mobilapplikasjonen bruker Redis Data Store på backend for å lagre detaljene om attraksjoner inkludert deres geospatiale koordinater.

De har brukt Redis -hasjene for å lagre den grunnleggende informasjonen relatert til attraksjonene. For Geolocation -koordinatdelen bruker de Redis geospatial datastruktur.

La oss opprette en ny geospatial indeks som inneholder to medlemmer.

Geoadd attraksjoner: NewYork 23.596920 67.104923 "Lazy Mountain" 134.694013 45.394022 "Sabra River"

Nå, “Lat fjell”Og“Sabra -elven”Medlemmer skal lagres i et sortert sett som refereres til av nøkkelen Attraksjoner: NewYork.

La oss bruke geodistkommandoen for å beregne avstanden mellom de to ovennevnte medlemmene. Som standard skal den returnere avstanden i meter.

Geodistattraksjoner: Newyork "Lazy Mountain" "Sabra River"

Som du ser har vi spesifisert geospatialindeksen som Attraksjoner: NewYork. Deretter har vi de to medlemmene som strenger.

Som forventet returneres utgangen i meter. Den doble datatypen har blitt brukt til å representere avstanden.

Hente avstanden i kilometer

Det er mulig å hente ovennevnte avstand i kilometer også. Du trenger bare å bestå det valgfrie argumentet 'km' følgende:

Geodistattraksjoner: NewYork "Lazy Mountain" "Sabra River" km

Produksjon

Hente avstanden i miles

'Mi' -argumentet bør spesifiseres for å beregne avstanden mellom de gitte medlemmene i miles.

Geodistattraksjoner: NewYork "Lazy Mountain" "Sabra River" MI

Produksjon

Hent avstanden i føttene

Når du trenger å vite antall føtter fra et medlem til et annet, bare spesifiser enheten som 'ft'.

Geodistattraksjoner: NewYork "Lazy Mountain" "Sabra River" FT

Produksjon

Hver gang du spesifiserer ikke-eksisterende medlemmer, bør geodistkommandoen returnere null. La oss spesifisere to ikke-eksisterende medlemmer som følger:

Geodistattraksjoner: NewYork "Lazy" "Sabra"

Produksjon

Hvis den spesifiserte tasten ikke eksisterer, vil kommandoen returnere null.

Geodistattraksjoner: Washington "Lazy Mountain" "Sabra River" ft

I eksemplet ovenfor Attraksjoner: Washington Nøkkel er ikke tilgjengelig. Så utgangen er null som vist i følgende:

Konklusjon

Oppsummert har Redis Geospatial Data-typen blitt introdusert for å holde koordinater av geo-lokasjoner. Som nevnt lagres lengdegraden og breddegraden for et gitt medlem. Dette er representert som et sortert sett i minnet. Flere kommandoer er tilgjengelige for å operere på geospatiale datatyper. Geodisten er en av de nyttige kommandoene som fungerer på geospatiale indekser for å returnere avstanden mellom spesifiserte medlemmer. Som diskutert i introduksjonsdelen, returneres avstanden på meter som standard. Geodist -kommandoen aksepterer valgfrie argumenter for å returnere avstanden i andre enheter i tillegg til at kilometer, føtter og miles.