(此内容我大号已经发过,但是我感觉大号权重应该被降低了,所以一天了,完全没有反应,打扰到诸位,请谅解) 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:/ 我做不出来了...实在是想不到怎么去排序了.定时的话,在大批量数据的情况下,会有数据延迟的问题.
1
ryd994 2021-08-03 11:20:22 +08:00 via Android
固定价格一个表排序。浮动价格一个表排序。查询的时候查两个表然后手动合并结果。
如何合并两个( N 个)已经排序的列表,经典面试题了,不用我说了吧? |
3
ryd994 2021-08-03 23:52:06 +08:00 via Android
已知每页第一个和最后一个值,两边查询比较大小,直到左右两页范围相差不大,而且总数是目标范围为止。如果你对数据可以做假设的话这肯定有优化的空间。
又或者已知数据范围的话可以尝试几个分页值,分别清点总数。然后选择合适的范围,只合并范围内的数据。 最差最差,先查第一页,看范围是否重叠。不重叠的话取小的一方。重叠的话取双方。计算总数直到超过需要的页数。 再怎么说也比你全数据都查一遍要好。 |