将redis用于gps位置跟踪的最佳方法是什么?

问题描述 投票:1回答:1

我是redis的新手,并且正在考虑实施一些项目以便熟悉它。我想到的一个有趣的项目是使用redis作为实时gps位置的缓存。困扰我的唯一部分是它的实施。我阅读了redia对地理空间数据的支持,但是如果我想继续更新某些键的位置点,那就让我很烦恼,这似乎是不可能的。

我开始使用的一种方法是使用哈希结构来存储需要跟踪的设备的纬度和长度,并继续设置其值,然后更新值,并将所有这些哈希值保留在一个集合中。但这似乎不是引擎盖方法,它也不允许我使用redis提供的地理空间查询。

任何有关如何以有效方式实施的线索。

redis
1个回答
2
投票

您可以在具有不同坐标的相同设备ID上重复使用GEOADD。这将“移动”对象在地理集中的位置,并将立即影响下一个半径查询。

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"
© www.soinside.com 2019 - 2024. All rights reserved.