Data structures Redis GEORADIUS具有一个Z集,而具有许多特定大小的Z集
什么会更快,一个有地理数据的大ZSET,我将用GEORADIUS查询100米半径 或 很多ZSET,每个ZSET负责覆盖全世界的100m X 100m平方米?以这100万平方米命名,如: 左转弯1_49_2440000_28_5010000 左转弯2_49_2450000_28_5010000 把所有的100米都放在布景的右边和底部。 因此,当搜索最近的点时,我将省略gps中的冗余数字,例如:49.2440408,28.5011694将变为 49.2440000,28.5010000这样我就知道了ZSET的名字,在那里可以得到100米精度的所有精确值Data structures Redis GEORADIUS具有一个Z集,而具有许多特定大小的Z集,data-structures,redis,gps,geospatial,Data Structures,Redis,Gps,Geospatial,什么会更快,一个有地理数据的大ZSET,我将用GEORADIUS查询100米半径 或 很多ZSET,每个ZSET负责覆盖全世界的100m X 100m平方米?以这100万平方米命名,如: 左转弯1_49_2440000_28_5010000 左转弯2_49_2450000_28_5010000 把所有的100米都放在布景的右边和底部。 因此,当搜索最近的点时,我将省略gps中的冗余数字,例如:49.2440408,28.5011694将变为 49.2440000,28.5010000这样我就知
或者以一般形式提出疑问:如何在redis中存储和访问ZSET的名称?如果我有太多的zset,它会影响访问它们时的性能吗?只能通过基准测试对这种方法进行精确比较,这将特定于您的数据集和配置。但从架构上讲,您的优点和缺点是:
- 大ZSET:执行的带宽和操作(CPU周期)更少,边界上没有问题(可能与多个ZSET重复),可以通过分片获得吞吐量李>
- 许多ZSET:减少其他操作的延迟(当大ZSET运行时,其他命令正在等待),可以通过分片获得吞吐量,通过集群获得延迟
这意味着查询之外的项会对查询产生O(log(M))影响。因此,1000万件商品17跳,或者1b件商品21跳,这是相当便宜的。剩下的问题是,您会在节点之间进行分区吗?为什么不对其进行基准测试并找出答案?支持更复杂的多zset方法的一点是,它能够通过使用分片/集群环境对其进行某种程度的并行化。@Midnight Guest我已经更新了答案,应该足以做出决定了