2017-12-25 3 views
0

私はredisに慣れていて、それに精通するためにいくつかのプロジェクトを実装することを考えていました。興味深いプロジェクトの1つは、リアルタイムGPSの場所のキャッシュとしてredisを使用することでした。私を混乱させる唯一の部分は実装です。私はrediaによる地理空間データのサポートについて読んでいますが、可能なように思われない、いくつかのキーに対してロケーション・ポイントを更新し続ける場合はseyにします。gpsロケーショントラッキングにredisを使用する最良の方法は何ですか?

私が始めた1つの方法は、追跡する必要があるデバイスの緯度と経度を格納するためにハッシュ構造を使用し、その値を設定し続けて値を更新し、これらのハッシュをすべてセット。しかし、それはフードのアプローチではないように思われます。また、私はredisによって提供された地理空間クエリを使用することもできません。

どのように効果的に実装するかについての指針。

答えて

2

GEOADDは、異なる座標の同じデバイスIDで繰り返し使用できます。これにより、ジオ・セット内のオブジェクトの位置が「移動」され、直ちに次の半径のクエリに影響します。

127.0.0.1:6379> GEOADD foo 34 32 bar 
(integer) 1 
127.0.0.1:6379> GEORADIUS foo 34 32 100 m 
1) "bar" 

# Let's "move" bar in foo to new coordinates 
127.0.0.1:6379> GEOADD foo 35 36 bar 
(integer) 0 
127.0.0.1:6379> GEORADIUS foo 34 32 100 m 
(empty list or set) 
127.0.0.1:6379> GEORADIUS foo 35 36 100 m 
1) "bar" 

そして、あなたは座標をしたい場合は、それも簡単です:

127.0.0.1:6379> GEORADIUS foo 35 36 100 m WITHCOORD 
1) 1) "bar" 
    2) 1) "34.99999791383743286" 
    2) "35.99999953955607168" 
+0

うわー、ありがとう。これは私が探していたものです。 – MrPyCharm

関連する問題