Redis GEO

Redis GEO は主に地理位置情報を格納し、格納した情報を操作するために使用されます。この機能は Redis 3.2 バージョンで追加されました。

Redis GEO の操作方法は次のとおりです:

  • geoadd:地理位置の座標を追加します。
  • geopos:地理位置の座標を取得します。
  • geodist:2つの位置間の距離を計算します。
  • georadius:ユーザーが指定した経度・緯度座標に基づいて、指定範囲内の地理位置の集合を取得します。
  • georadiusbymember:位置集合に格納されているある地点に基づいて、指定範囲内の地理位置の集合を取得します。
  • geohash:1つまたは複数の位置オブジェクトの geohash 値を返します。

geoadd

geoadd は指定された地理空間位置を格納するために使用され、1つまたは複数の経度(longitude)、緯度(latitude)、位置名(member)を指定された key に追加できます。

geoadd の構文は次のとおりです:

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

次のインスタンスでは、key は Sicily で、Palermo と Catania は位置名です:

インスタンス

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 は、指定された key から指定された名前(member)のすべての位置(経度と緯度)を返すために使用され、存在しない場合は nil を返します。

geopos の構文は次のとおりです:

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 は、指定された2つの位置間の距離を返すために使用されます。

geodist の構文は次のとおりです:

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

member1 member2 は2つの地理位置です。

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

  • m :メートル、デフォルト単位。
  • km :キロメートル。
  • mi :マイル。
  • ft :フィート。
  • > Palermo と 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 は、指定された経度・緯度を中心とし、キーに含まれる位置要素のうち、中心からの距離が指定された最大距離を超えないすべての位置要素を返します。

    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 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 のインスタンス:

    インスタンス

    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 は geohash を使用して地理位置の座標を保存します。

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

    geohash の構文は次のとおりです:

    GEOHASH key member [member ...]

    インスタンス:

    インスタンス

    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>
    その他の拡張