Redis GEO

Redis GEO se utiliza principalmente para almacenar información de ubicación geográfica y operar sobre la información almacenada. Esta función se agregó en la versión 3.2 de Redis.

Los métodos de operación de Redis GEO son:

  • geoadd: agrega las coordenadas de una ubicación geográfica.
  • geopos: obtiene las coordenadas de una ubicación geográfica.
  • geodist: calcula la distancia entre dos ubicaciones.
  • georadius: obtiene el conjunto de ubicaciones geográficas dentro de un radio específico según las coordenadas de latitud y longitud proporcionadas por el usuario.
  • georadiusbymember: obtiene el conjunto de ubicaciones geográficas dentro de un radio específico basándose en un lugar almacenado en el conjunto de ubicaciones.
  • geohash: devuelve el valor geohash de uno o más objetos de ubicación.

geoadd

geoadd se utiliza para almacenar la posición geoespacial especificada. Puede agregar una o más longitudes, latitudes y nombres de ubicación (member) a la clave especificada.

La sintaxis de geoadd es la siguiente:

GEOADD key longitude latitude member [longitude latitude member ...]

En el siguiente ejemplo, la clave es Sicily, y Palermo y Catania son nombres de ubicación:

Ejemplo

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 se utiliza para devolver las posiciones (longitud y latitud) de todos los nombres (member) especificados en la clave dada. Si no existen, devuelve nil.

La sintaxis de geopos es la siguiente:

GEOPOS key member [member ...]

Ejemplo

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 se utiliza para devolver la distancia entre dos ubicaciones dadas.

La sintaxis de geodist es la siguiente:

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

member1 y member2 son dos ubicaciones geográficas.

Descripción del último parámetro de unidad de distancia:

  • m: metros, unidad por defecto.
  • km: kilómetros.
  • mi: millas.
  • ft: pies.
  • > Calcula la distancia entre Palermo y Catania:

    Ejemplo

    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 toma las coordenadas de latitud y longitud dadas como centro y devuelve todos los elementos de ubicación contenidos en la clave cuya distancia al centro no supere la distancia máxima dada.

    georadiusbymember es igual que el comando GEORADIUS; ambos pueden encontrar elementos dentro de un rango específico, pero el punto central de georadiusbymember está determinado por el elemento de ubicación dado, no se usan longitud y latitud para decidir el punto central.

    La sintaxis de georadius y georadiusbymember es la siguiente:

    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]

    Descripción de parámetros:

    • m: metros, unidad por defecto.
    • km: kilómetros.
    • mi: millas.
    • ft: pies.
    • WITHDIST: al devolver los elementos de ubicación, también devuelve la distancia entre el elemento y el centro.
    • WITHCOORD: también devuelve la longitud y la latitud del elemento de ubicación.
    • WITHHASH: devuelve la puntuación del conjunto ordenado del elemento de ubicación codificado con el geohash original, en forma de entero con signo de 52 bits. Esta opción se usa principalmente en aplicaciones de bajo nivel o para depuración, y su utilidad práctica no es grande.
    • COUNT limita el número de registros devueltos.
    • ASC: los resultados se ordenan de cerca a lejos según la distancia.
    • DESC: los resultados se ordenan de lejos a cerca según la distancia.

    Ejemplo de georadius:

    Ejemplo

    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>

    Ejemplo de georadiusbymember:

    Ejemplo

    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> GEORADIUSBYMEMBER Sicily Agrigento 100 km
    1) "Agrigento"
    2) "Palermo"
    redis>

    geohash

    Redis GEO utiliza geohash para guardar las coordenadas de ubicación geográfica.

    geohash se utiliza para obtener el valor geohash de uno o más elementos de ubicación.

    La sintaxis de geohash es la siguiente:

    GEOHASH key member [member ...]

    Ejemplo:

    Ejemplo

    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>
    Otras extensiones