V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chrosing
V2EX  ›  问与答

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

  •  
  •   chrosing · 2021-08-03 10:15:06 +08:00 · 716 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    (此内容我大号已经发过,但是我感觉大号权重应该被降低了,所以一天了,完全没有反应,打扰到诸位,请谅解) 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:/ 我做不出来了...实在是想不到怎么去排序了.定时的话,在大批量数据的情况下,会有数据延迟的问题.

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

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

    再怎么说也比你全数据都查一遍要好。
    chrosing
        4
    chrosing  
    OP
       2021-08-04 10:21:18 +08:00
    @ryd994 感谢老哥 有灵感了.多谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 20:00 · PVG 04:00 · LAX 12:00 · JFK 15:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.