Redis GEOHASHコマンドの使い方 – 地理空間データのメンバーからジオハッシュ文字列を取得する方法
このチュートリアルでは、Redisに保存された地理空間値(ジオスペーシャル値)に含まれる1つまたは複数のメンバー(要素)のGeohash文字列を取得する方法を解説します。この目的には、RedisのGEOHASHコマンドを使用します。
GEOHASHコマンドとは
GEOHASHコマンドは、キーに保存された地理空間値の中から指定された1つ以上のメンバーに対して、有効なGeohash文字列を返すためのコマンドです。地理空間値はソート済みセット(sorted set)として表現され、GEOADDコマンドを使って登録されます。
Redisは地理空間要素の位置情報(経度・緯度)を、Geohash技術の変種を用いて表現しています。緯度と経度のビットを交互に組み合わせることで、一意な52ビット整数が生成されます。エンコード・デコード処理で使用される初期の最小座標・最大座標が標準と異なるため、内部表現も標準のGeohashとは異なります。しかし、このコマンドが返すのは標準的なGeohash文字列です。
標準的なGeohash文字列の特徴
- 11文字で構成されます。
- geohash.orgなどのサービスで利用できます。
- 似た接頭辞(プレフィックス)を持つ文字列同士は近い位置にあることを示します。ただし逆は必ずしも真ではなく、異なる接頭辞を持つ文字列でも近くに存在する場合があります。
- 右側の文字を削除して短縮できます。精度は低下しますが、同じエリアを指し示すことは可能です。
戻り値とエラー
- キーが存在しない場合は、nilを含む配列が返されます。
- キーは存在するものの、GEOADDコマンドで登録されたソート済みセット以外のデータ型が保存されている場合は、エラーが返されます。
構文
redis host:port> GEOHASH <keyname> <member> [member ...]
出力
- (array) Geohash文字列のリストを表す配列 - エラー:キーが存在するが、GEOADDで登録されたソート済みセットではない場合
実行例
以下は、GEOHASHコマンドを使ってメンバーのGeohash文字列を取得する実行例です。
redis host:port> GEOHASH cities Tokyo Osaka Nagoya 1) "xn774c0k0xd" 2) "wypzpf3r5y0" 3) "xn1tc7e9x40"
このように、複数のメンバーを一度に指定することで、それぞれ対応するGeohash文字列が配列として返されます。
参考資料
- Redis公式ドキュメント – GEOHASHコマンド
以上が、Redisデータストアに保存された地理空間値の1つまたは複数の要素からGeohash文字列を取得する方法でした。この記事が役に立った場合は、コメント欄でご意見をお聞かせください。また、他の方にもぜひシェアしてください。
-
Redis GEODISTコマンド徹底解説 – 地理空間データの2つのメンバー間の距離を取得する方法
このチュートリアルでは、キーに保存された地理空間値(ジオスペーシャルデータ)の2つのメンバー間の距離を取得する方法について学びます。この目的のために、RedisのGEODISTコマンドを使用します。 GEODISTコマンドとは GEODISTコマンドは、キーに保存された地理空間値(ソート済みセット)のうち、指定した2つのメンバー間の距離を、指定した単位で返すために使用されます。指定されたメンバーの一方または両方が地理空間値に存在しない場合は、nullが返されます。 指定できる単位は以下の4種類です。 m:メートル(デフォルト) km:キロメートル mi:マイル ft:フィート キーが存在し
-
Redisでキーに文字列値を設定する方法を徹底解説 – SET / SETNX / SETEX / PSETEX コマンドの使い方
このチュートリアルでは、Redisのデータストア上で指定したキーに文字列値を設定する方法について、SET、SETNX、SETEX、PSETEX の4つのコマンドを使って詳しく解説します。それぞれのコマンドの動作の違いや使い分けのポイントもあわせて紹介するので、Redisの文字列操作をマスターしたい方はぜひ参考にしてください。 SETコマンドとは SETコマンドは、指定したキーに文字列値を設定するための最も基本的なコマンドです。キーがすでに存在する場合は、その型に関係なく値が上書きされます。また、キーに設定されていた以前の有効期限(TTL)も削除される点に注意が必要です。 SETコマンドのオプシ