[Go] Go + Redisで位置情報を扱ってみる

お世話になっております。
しゃまとんです。

今回はGoで位置情報を扱ってみることにしました。
ちなみに作者の稚拙アプリ「ことだまっぷ」でも似たようなことをして位置情報を利用しています。

ことだまっぷ

ことだまっぷ
開発元:shamaton
無料
posted with アプリーチ

位置情報を扱うために、Redisを利用しています。
実装の際にRDBMSでできるかな~と思っていたのですが、色々しらべたところRedisが対応していてパフォーマンスも良さそうなのでredisを使うことにしました。

Goでredisを扱えるようにするパッケージは色々あり、個人的にはredigoを使っていたのですが、位置情報を扱えるようになっていませんでした。そこで別パッケージのgo-redisが対応されているということで使っています。

実装の前にgo-redisを取得しておきましょう。

確認用コードは下記のようになります。
処理的には指定座標の半径10km以内のデータを取得するようなものです。

コードを実装したら、Redisに確認用データを入れておきます。
Redisに接続して下記のコマンドを実行し位置情報を入れておきます。

実行してみます。
返り値はgo-redis側で用意されているので、扱いやすい状態になっています。
というかgo-redisが結構使いやすい気がします。結果はこんな感じ。

これで位置情報も扱っていけそうです。
ちなみに環境を汚したくないという方はDockerfileも置いておくので良かったら使ってください。

コンテナのビルドと実行は下記な感じで。

以上です。

■ 参考
Redisで位置情報を扱うコマンド