求助:针对固定价格和浮动价格的排序.

2021-08-03 10:15:06 +08:00
 chrosing

(此内容我大号已经发过,但是我感觉大号权重应该被降低了,所以一天了,完全没有反应,打扰到诸位,请谅解) start: 在保存数据的时候有两个参数,第一个是 A:price 价格,第二个是 B:float 浮动 可以选择两种模式: 第一种,选择固定定价,比如 A 商品我定价为 6.99 元,那么将数值用 10-6.99 元的结果放大存入 Zset 中进行排序. 第二种,选择浮动定价,比如 B 商品我浮动为 0.02 元,如果市场均价为 6.80 元,那么最后的结果集就是 6.82 元.也放入 Zset 集合中

求助:在一个列表中,如何针对这两个结果集进行查询排序,从小到大.比如 T1 时刻,均价为 6.80 元,那么 B(6.82)<A(6.99) 在 T2 时刻时,均价为 7.01 元,那么 B(7.03)>A(6.99). 在数据量比较多的情况下,如何快速准确的拿到结果集,并且还有分页.

各位彦祖,我目前想到的就是,存入两个字段,比如价格 Price 和浮动 Float,然后固定数值就存 Price(6.99),浮动就为 0, 浮动定价的时候就是,将目前均价存入 Price,然后 Float=0.02 存入.最后定时更新 price 字段,然后刷新 Zset 缓存.

end:/ 我做不出来了...实在是想不到怎么去排序了.定时的话,在大批量数据的情况下,会有数据延迟的问题.

716 次点击
所在节点    问与答
4 条回复
ryd994
2021-08-03 11:20:22 +08:00
固定价格一个表排序。浮动价格一个表排序。查询的时候查两个表然后手动合并结果。
如何合并两个( N 个)已经排序的列表,经典面试题了,不用我说了吧?
chrosing
2021-08-03 16:24:35 +08:00
@ryd994 老哥说的也是一种方法 但是 还需要分页的话 两个列表一边一半?
ryd994
2021-08-03 23:52:06 +08:00
已知每页第一个和最后一个值,两边查询比较大小,直到左右两页范围相差不大,而且总数是目标范围为止。如果你对数据可以做假设的话这肯定有优化的空间。
又或者已知数据范围的话可以尝试几个分页值,分别清点总数。然后选择合适的范围,只合并范围内的数据。

最差最差,先查第一页,看范围是否重叠。不重叠的话取小的一方。重叠的话取双方。计算总数直到超过需要的页数。

再怎么说也比你全数据都查一遍要好。
chrosing
2021-08-04 10:21:18 +08:00
@ryd994 感谢老哥 有灵感了.多谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX