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

Redis GEO

Redis GEO は、主に地理的位置情報を保存し、保存された情報に対して操作を行うために使用されます。この機能は Redis 32 バージョンアップ。

Redis GEO 操作方法には:

  • geoadd:地理的位置の座標を追加します。

  • geopos:地理的位置の座標を取得します。

  • geodist:2つの位置間の距離を計算します。

  • georadius:指定された経度と緯度座標に基づいて指定範囲内の地理的位置集合を取得します。

  • georadiusbymember:位置集合内の特定の場所から指定範囲内の地理的位置集合を取得します。

  • geohash:位置オブジェクトの geohash 値を返します。

geoadd

geoadd は、指定された地理空間位置を保存し、1つまたは複数の経度(longitude)、緯度(latitude)、位置名(member)を指定された key に追加します。

geoadd の语法フォーマットは以下の通りです:

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

以下の例では、key は Sicily、位置名は Palermo と Catania です:

redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"1662741516"
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>

geopos

geopos は、指定された key 内のすべての指定された名称(member)の位置(経度と緯度)を返します。存在しない場合は nil を返します。

geopos の语法フォーマットは以下の通りです:

GEOPOS key member [member ...]
redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
(integer) 2
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "1336138933897018433"
   2) "3811555639549629859"
2) 1) "15.08726745843887329"
   2) "3750266842333162032"
3) (nil)
redis>

geodist

geodist は、2つの指定された位置間の距離を返します。

geodistの文法形式は以下の通りです:

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

member1 member2 2つの地理的な位置に対して。

最後の距離単位パラメータ説明:

  • m  :メートル、デフォルトの単位。

  • km  :キロメートル。

  • mi :マイル。

  • ft :フィート。

  • PalermoとCataniaの距離を計算します:

  • redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
    (integer) 2
    redis> GEODIST Sicily Palermo Catania
    "1662741516"
    redis> GEODIST Sicily Palermo Catania km
    "1662742"
    redis> GEODIST Sicily Palermo Catania mi
    "1033182"
    redis> GEODIST Sicily Foo Bar
    (nil)
    redis>

    georadius、georadiusbymember

    georadiusは指定された緯度と経度を中心に、キーが含む位置要素の中で中心点から最大距離が指定された距離以内のすべての位置要素を返します。

    georadiusbymemberとGEORADIUSコマンドは、指定された範囲内の要素を見つけることができますが、georadiusbymemberの中心点は指定された位置要素によって決定され、経度と緯度を使用して中心点を決定することはありません。

    georadiusとgeoradiusbymemberの文法形式は以下の通りです:

    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]

    パラメータ説明:

    • m  :メートル、デフォルトの単位。

    • km  :キロメートル。

    • mi :マイル。

    • ft :フィート。

    • WITHDIST: 位置要素を返す際に、位置要素と中心点の距離も同時に返します。

    • WITHCOORD: 位置要素の経度と緯度も同時に返します。

    • WITHHASH: 52 符号整数の形式で、位置要素の原始のgeohashエンコードの順序集合のスコアを返します。このオプションは主にベースラインアプリケーションやデバッグに使用されますが、実際の効果はあまり大きくありません。

    • COUNT: 返されるレコード数を制限します。

    • ASC: 結果は近くから遠くへと並び替えられます。

    • DESC: 結果は遠くから近くへと並び替えられます。

    georadius 例:

    redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
    (integer) 2
    redis> GEORADIUS Sicily 15 37 200 km WITHDIST
    1) 1) "Palermo"
       2) "190.4424"
    2) 1) "Catania"
       2) "564413"
    redis> GEORADIUS Sicily 15 37 200 km WITHCOORD
    1) 1) "Palermo"
       2) 1) "1336138933897018433"
          2) "3811555639549629859"
    2) 1) "Catania"
       2) 1) "15.08726745843887329"
          2) "3750266842333162032"
    redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD
    1) 1) "Palermo"
       2) "190.4424"
       3) 1) "1336138933897018433"
          2) "3811555639549629859"
    2) 1) "Catania"
       2) "564413"
       3) 1) "15.08726745843887329"
          2) "3750266842333162032"
    redis>

    georadiusbymember 例:

    redis> GEOADD Sicily 13583333 37316667 "Agrigento"
    (integer) 1
    redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
    (integer) 2
    redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
    1) "Agrigento"
    2) "Palermo"
    redis>

    geohash

    Redis GEOは、geohashを使用して地理的な座標を保存します。

    geohashは、1つまたは複数の位置要素のgeohash値を取得するために使用されます。

    geohash 文法形式は以下の通りです:

    GEOHASH key member [member ...]

    例:

    redis> GEOADD Sicily 13361389 38115556 "Palermo" 15.087269 37502669 "Catania"
    (integer) 2
    redis> GEOHASH Sicily Palermo Catania
    1) "sqc8b49rny0"
    2) "sqdtr74hyu0"
    redis>