Redis Geodist

Redis Geodist
Redis zaczyna obsługiwać geoprzestrzenne typy danych z wersji 3.2.0. Jest to jedna z unikalnych funkcji oferowanych przez Redis w innych sklepach danych. Struktura danych geoprzestrzennych może utrzymywać współrzędne danej lokalizacji. Dzięki bogatemu zestawowi operacji możliwe jest zapytanie o lokalizacje i ich współrzędne na podstawie różnych kryteriów.

Każdy członek jest wepchnięty do zestawu sortowanego w Redis, do którego odwołuje się klucz, który umożliwia wydajne i uporządkowane przesłuchanie tych elementów geoprzestrzennych. Jednym z najlepszych zastosowań tej struktury danych jest to, że możesz łatwo zapytać o odległość między dwoma lokacją geo-lokacji (członków) za pomocą polecenia geodystów wprowadzonego przez Redis. Będzie to szczegółowy przewodnik na temat polecenia geodystów, składni i jego przypadków użycia.

Obliczanie odległości

Redis używa wzoru matematycznego Haversine do obliczania odległości dla indeksów geoprzestrzennych, które zakładają, że Ziemia jest idealną kulą. Wszyscy wiemy, że Ziemia nie jest idealną kulą. A więc 0.5% błędu można wprowadzić poprzez obliczenie odległości. Można to zignorować w aplikacjach takich jak media społecznościowe, pobliskie wyszukiwarki miejsc i itp. Ale w przypadku aplikacji o krytycznym błędach należy go używać z ostrożnością.

Polecenie geodystów

Polecenie geodystów służy do obliczenia odległości między dwoma elementami przechowywanymi w danym kluczu geoprzestrzennym. To polecenie akceptuje dwa obowiązkowe parametry członka i klucz geoprzestrzenny (indeks), który wskazuje na sortowany zestaw. Odległość jest zwracana w metrach (m). Opcjonalnie możesz również określić urządzenie. Obsługuje także kilometry, mile i stopy.

Składnia polecenia geodystów jest następujące:

Geodist Geospatial_Index/Key Member_1 Member_2 [M | Km | Ft | MI]

Zwraca odległość jako podwójną wartość. Wartość zależy od określonej jednostki. Ilekroć polecenie napotyka nieistniejących lub zaginionych członków, zwraca Null.

Przypadek użycia - uzyskaj odległość między dwiema atrakcjami

Załóżmy, że firma turystyczna wprowadziła aplikację mobilną, aby znaleźć szczegóły atrakcji w danym kraju. Aplikacja mobilna korzysta z sklepu danych Redis na backend do przechowywania szczegółów atrakcji, w tym ich współrzędnych geoprzestrzennych.

Używają Hasze Redis do przechowywania podstawowych informacji związanych z atrakcjami. Dla części współrzędnej geolokalizacji używają one struktury danych geoprzestrzennych Redis.

Utwórzmy nowy indeks geoprzestrzenny, który zawiera dwóch członków.

Atrakcje Geoadd: Newyork 23.596920 67.104923 „Lazy Mountain” 134.694013 45.394022 „Sabra River”

Teraz "Leniwa góra" I "Sabra River„Członkowie powinni być przechowywani w sortowanym zestawie, do którego odwołuje się klucz Atrakcje: Newyork.

Użyjmy polecenia geodystów, aby obliczyć odległość między powyższymi dwoma elementami. Domyślnie powinien zwrócić odległość w metrach.

Atrakcje geodystów: Newyork „Lazy Mountain” „Sabra River”

Jak widać, określiliśmy indeks geoprzestrzenny jako Atrakcje: Newyork. Następnie mamy dwóch członków jako sznurki.

Zgodnie z oczekiwaniami wyjście jest zwracane w metrach. Podwójny typ danych został użyty do przedstawienia odległości.

Odzyskać odległość w kilometrach

Możliwe jest odzyskanie powyższej odległości również w kilometrach. Wystarczy przekazać opcjonalny argument 'km'Jak następuje:

Atrakcje geodystów: Newyork „Lazy Mountain” „Sabra River” KM

Wyjście

Odzyskać odległość w milach

Argument „mi” należy określić w celu obliczenia odległości między danymi elementami w milach.

Atrakcje geodystów: Newyork „Lazy Mountain” „Sabra River” MI

Wyjście

Odzyskać odległość w stopach

Ilekroć musisz znać liczbę stóp z jednego członka do drugiego, po prostu określ jednostkę jako 'ft'.

Atrakcje geodystów: Newyork „Lazy Mountain” „Sabra River” FT

Wyjście

Ilekroć określasz nieistniejących członków, polecenie geodystów powinno zwrócić NULL. Podajmy dwóch nieistniejących członków w następujący sposób:

Atrakcje geodystów: Newyork „Lazy” „Sabra”

Wyjście

Jeśli określony klucz nie istnieje, polecenie zwróci NULL.

Atrakcje geodystów: Waszyngton „Lazy Mountain” „Sabra River” Ft

W powyższym przykładzie Atrakcje: Waszyngton Klucz nie jest dostępny. Tak więc wyjście jest zerowe, jak pokazano następująco:

Wniosek

Podsumowując, wprowadzono typ danych geoprzestrzennych Redis, aby przechowywać współrzędne geo-lokacji. Jak wspomniano, wartości długości i szerokości geograficznej są przechowywane dla danego członka. Jest to reprezentowane jako sortowany zestaw w pamięci. Dostępnych jest kilka poleceń do działania na geoprzestrzennych typach danych. Geodist jest jedną z użytecznych poleceń, które działają na indeksach geoprzestrzennych w celu zwrócenia odległości między określonymi członkami. Jak omówiono w sekcji wprowadzającej, odległość jest domyślnie zwracana w metrach. Polecenie geodystów przyjmuje opcjonalne argumenty, aby zwrócić odległość w innych jednostkach, takich jak kilometry, stopy i mile.