Redis GEO
Redis GEO wird hauptsächlich verwendet, um geografische Standortinformationen zu speichern und mit den gespeicherten Informationen zu arbeiten. Diese Funktion wurde in Redis Version 3.2 hinzugefügt.
Zu den Redis-GEO-Operationsmethoden gehören:
- geoadd: Fügt die Koordinaten eines geografischen Standorts hinzu.
- geopos: Ruft die Koordinaten eines geografischen Standorts ab.
- geodist: Berechnet die Entfernung zwischen zwei Standorten.
- georadius: Ruft die Menge der geografischen Standorte innerhalb eines angegebenen Bereichs basierend auf den vom Benutzer angegebenen Längen- und Breitengradkoordinaten ab.
- georadiusbymember: Ruft die Menge der geografischen Standorte innerhalb eines angegebenen Bereichs basierend auf einem in der Standortmenge gespeicherten Standort ab.
- geohash: Gibt den Geohash-Wert eines oder mehrerer Standortobjekte zurück.
geoadd
geoadd wird verwendet, um angegebene geografische Positionen zu speichern. Es kann einen oder mehrere Längengrade, Breitengrade und Ortsnamen (Member) zum angegebenen Schlüssel hinzufügen.
Das Syntaxformat von geoadd ist wie folgt:
GEOADD key longitude latitude member [longitude latitude member ...]
Im folgenden Beispiel ist der Schlüssel Sicily, und Palermo und Catania sind Ortsnamen:
Beispiel
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>
geopos
geopos wird verwendet, um die Positionen (Längengrad und Breitengrad) aller angegebenen Namen (Member) aus dem angegebenen Schlüssel zurückzugeben. Nicht existierende Elemente geben nil zurück.
Das Syntaxformat von geopos ist wie folgt:
GEOPOS key member [member ...]
Beispiel
(integer) 2
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "15.08726745843887329"
2) "37.50266842333162032"
3) (nil)
redis>
geodist
geodist wird verwendet, um die Entfernung zwischen zwei angegebenen Orten zurückzugeben.
Das Syntaxformat von geodist ist wie folgt:
GEODIST key member1 member2 [m|km|ft|mi]
member1 und member2 sind die beiden geografischen Orte.
Erklärung des letzten Parameters für die Entfernungseinheit:
- m: Meter, Standardeinheit.
- km: Kilometer.
- mi: Meilen.
- ft: Fuß. Berechnen Sie die Entfernung zwischen Palermo und Catania:
Beispiel
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEODIST Sicily Palermo Catania km
"166.2742"
redis> GEODIST Sicily Palermo Catania mi
"103.3182"
redis> GEODIST Sicily Foo Bar
(nil)
redis>
georadius, georadiusbymember
georadius nimmt den angegebenen Längengrad und Breitengrad als Mittelpunkt und gibt alle Standort-Elemente im Schlüssel zurück, deren Entfernung vom Mittelpunkt die angegebene maximale Entfernung nicht überschreitet.
georadiusbymember ist dasselbe wie der Befehl GEORADIUS; beide können Elemente finden, die sich innerhalb eines angegebenen Bereichs befinden. Der Mittelpunkt von georadiusbymember wird jedoch durch das angegebene Standort-Element bestimmt, anstatt den Mittelpunkt anhand von Längen- und Breitengrad zu bestimmen.
Die Syntaxformate von georadius und georadiusbymember sind wie folgt:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
Parameter description:
- m: Meter, Standardeinheit.
- km: Kilometer.
- mi: Meilen.
- ft: Fuß.
- WITHDIST: Gibt bei der Rückgabe von Standort-Elementen auch die Entfernung zwischen dem Standort-Element und dem Mittelpunkt zurück.
- WITHCOORD: Gibt außerdem den Längen- und Breitengrad des Standort-Elements zurück.
- WITHHASH: Gibt den Score des sortierten Sets des Standort-Elements nach der ursprünglichen Geohash-Kodierung in Form einer vorzeichenbehafteten 52-Bit-Ganzzahl zurück. Diese Option wird hauptsächlich für Low-Level-Anwendungen oder zum Debuggen verwendet, und ihr praktischer Nutzen ist begrenzt.
- COUNT begrenzt die Anzahl der zurückgegebenen Datensätze.
- ASC: Sortiert Suchergebnisse nach Entfernung von nah nach fern.
- DESC: Suchergebnisse von weit nach nah sortieren.
georadius Beispiel:
Beispiel
(integer) 2
redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
2) "190.4424"
2) 1) "Catania"
2) "56.4413"
redis> GEORADIUS Sicily 15 37 200 km WITHCOORD
1) 1) "Palermo"
2) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "Catania"
2) 1) "15.08726745843887329"
2) "37.50266842333162032"
redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD
1) 1) "Palermo"
2) "190.4424"
3) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "Catania"
2) "56.4413"
3) 1) "15.08726745843887329"
2) "37.50266842333162032"
redis>
georadiusbymember Beispiel:
Beispiel
(integer) 1
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"
redis>
geohash
Redis GEO verwendet geohash, um die Koordinaten geografischer Standorte zu speichern.
geohash wird verwendet, um den geohash-Wert von einem oder mehreren Standortelementen abzurufen.
Das Syntaxformat von Geohash ist wie folgt:
GEOHASH key member [member ...]
Beispiel:
Beispiel
(integer) 2
redis> GEOHASH Sicily Palermo Catania
1) "sqc8b49rny0"
2) "sqdtr74hyu0"
redis>