English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redis GEO

Redis GEO viene utilizzato principalmente per memorizzare informazioni geografiche e per operare sulle informazioni memorizzate, questa funzionalità è stata aggiunta nella versione 3.2 di Redis.

Metodi di operazione GEO in Redis:

  • GEOADD: aggiunge le coordinate di una posizione geografica.

  • geopos: recupera le coordinate di una posizione geografica.

  • geodist: calcola la distanza tra due posizioni.

  • georadius: recupera una collezione di posizioni geografiche all'interno di un intervallo specificato in base a coordinate di latitudine e longitudine fornite dall'utente.

  • georadiusbymember: recupera una collezione di posizioni geografiche all'interno di un intervallo specificato in base a un luogo memorizzato nella collezione di posizioni.

  • geohash: restituisce i valori geohash di uno o più oggetti posizionali.

GEOADD

GEOADD serve per memorizzare posizioni geografiche specifiche, e può aggiungere un numero singolo o multiplo di latitudini (latitudine), longitudini (longitudine) e nomi di posizioni (membro) a una chiave specifica.

Formato della sintassi GEOADD:

GEOADD chiave latitudine longitudine membro [latitudine longitudine membro ...]

Nell'esempio seguente, key è Sicily, Palermo e Catania sono i nomi delle posizioni:

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(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 viene utilizzato per restituire tutte le posizioni (latitudine e longitudine) specificate da un dato key, nil per quelli non esistenti.

La sintassi di geopos è la seguente:

GEOPOS key member [member ...]
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(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 viene utilizzato per restituire la distanza tra due posizioni date.

La sintassi di geodist è la seguente:

GEODIST key member1 member2 [m|km|ft|mi]

member1 member2 sono due posizioni geografiche.

Descrizione dell'ultimo parametro di unità di distanza:

  • m: Metri, unità predefinita.

  • km: Chilometri.

  • mi: Miglia.

  • ft: Piedi.

  • Calcolare la distanza tra Palermo e Catania:

  • redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
    (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 si basa su un dato punto di latitudine e longitudine come centro, restituisce tutti gli elementi di chiave con posizioni che non superano la distanza massima data dal centro.

    georadiusbymember e GEORADIUS sono comandi simili, entrambi possono trovare gli elementi situati all'interno di un'area specificata, ma il punto centrale di georadiusbymember è determinato dall'elemento di posizione fornito, non dall'uso di latitudine e longitudine per determinare il punto centrale.

    La sintassi di georadius e georadiusbymember è la seguente:

    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]

    Descrizione dei parametri:

    • m: Metri, unità predefinita.

    • km: Chilometri.

    • mi: Miglia.

    • ft: Piedi.

    • WITHDIST: Restituisce anche la distanza tra l'elemento di posizione e il centro.

    • WITHCOORD: Restituisce anche la latitudine e la longitudine dell'elemento di posizione.

    • WITHHASH: Restituisce il valore dell'insieme di posizioni, codificato con geohash, in forma di intero a 52 bit con segno. Questa opzione è principalmente utilizzata per applicazioni di basso livello o debug e non ha un grande impatto effettivo.

    • COUNT: Limita il numero di record restituiti.

    • ASC: I risultati della ricerca sono ordinati da vicino a lontano.

    • DESC: I risultati della ricerca sono ordinati da lontano a vicino.

    georadius esempio:

    redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
    (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 example:

    redis> GEOADD Sicily 13.583333 37.316667 "Agrigento"
    (integer) 1
    redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
    (integer) 2
    redis> GEO_RADIUSBYMEMBER Sicily Agrigento 100 km
    1) "Agrigento"
    2) "Palermo"
    redis>

    geohash

    Redis GEO uses geohash to save geographical coordinates.

    geohash is used to get the geohash value of one or more position elements.

    The geohash syntax format is as follows:

    GEOHASH key member [member ...]

    Example:

    redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
    (integer) 2
    redis> GEOHASH Sicily Palermo Catania
    1) "sqc8b49rny0"
    2) "sqdtr74hyu0"
    redis>