我可以在redis中保存具有同一成员的多个geointry吗?或者有其他选择吗?

bpsygsoo  于 2021-06-09  发布在  Redis
关注(0)|答案(2)|浏览(341)

我的目标是在redis上创建一个道路限速缓存(取自osm),在那里用经纬度搜索位置,用georadius返回某个半径的限速。
问题是使用:

GEOADD speed-limits -45.000000 10.000000 "90"

如果我添加了一个新的位置,并且始终限制为90,那么上一个位置将被覆盖。

jucafojl

jucafojl1#

对。它会被覆盖因为 90 已指定值。
一般来说,你需要仔细选择你的钥匙。与简单地存储速度限制不同,您可以使用多个分隔符,例如时间戳、随机哈希,甚至是一些其他有用的信息(比如城市),在这种情况下使用限制。
例如,“90”可以转换为 90#1606757564#de#city_name .
这样,当您查询半径时,您将得到整个键。使用简单的 startsWith() 检查以获得原始限制。

drnojrws

drnojrws2#

你也可以
(1) 使用复合键作为成员 GEOADD speed-limits -45.000000 10.000000 90:timestamp:location ,查询将类似于 GEORADIUS speed-limits ... WITHCOORD 然后使用 .split(":")[0] 以获得速度。

(2) 单独存储速度 GEOADD speed-limits -45.000000 10.000000 timestamp:location 以及 SET timestamp:location 90 所以这也是一个两步查询。

相关问题