关于排行榜的程序设计 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brazz
V2EX    Redis

关于排行榜的程序设计

  •  
  •   brazz 2020-05-12 10:35:59 +08:00 5946 次点击
    这是一个创建于 2040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在需要根据充值表来统计每个公司、部门、小组(级别可能是有 N 级)以及个人(个人还分不同岗位)的今日、本月、上月以及累计充值金额的排行榜功能(排行榜一小时更新一次)。目前打算用 redis 的 zSet 来处理,但是感觉工程量巨大(可能是因为我思路错了),所以请教下如何设计比较好?

    12 条回复    2020-08-22 02:27:08 +08:00
    wysnylc
        1
    wysnylc  
       2020-05-12 10:45:53 +08:00   1
    我天天做这玩意,给你个提示 相同积分数据重排用两个 zset
    xcstream
        2
    xcstream  
       2020-05-12 10:53:37 +08:00
    一小时更新一次 sql 查一下就可以了
    xiaowangge
        3
    xiaowangge  
       2020-05-12 11:09:01 +08:00
    内部系统的话,SQL 就够用了
    brazz
        4
    brazz  
    OP
       2020-05-12 11:11:09 +08:00
    @wysnylc 就感觉代码写起来很麻烦,要维护 redis 的数据
    DDounx
        5
    DDounx  
       2020-05-12 11:15:22 +08:00
    SQL 好一点,内部的话
    brazz
        6
    brazz  
    OP
       2020-05-12 11:21:23 +08:00
    @DDounx sql 是代码简单,但是数据量比较大,会有瓶颈
    wysnylc
        7
    wysnylc  
       2020-05-12 11:55:37 +08:00
    @brazz #4 并不,如果不做重排 几行代码搞定
    做重排就很麻烦,批量查询以及重排都要写
    ljzxloaf
        8
    ljzxloaf  
       2020-05-12 14:07:21 +08:00   1
    SQL,如果不能直接访问 db 的话,收消息累加计数,注意持久化数据,redis 一般不作为高可用存储,只做缓存之用
    forrestchang
        9
    forrestchang  
       2020-05-12 14:11:22 +08:00   1
    非实时的 SQL 比较好,实时的可以选择 Redis + ZSET 。

    后者相同的数据可以把时间序列化成小数来做二维排序。
    brazz
        10
    brazz  
    OP
       2020-05-12 14:32:33 +08:00
    @wysnylc 他这种 今日、本月、上月、累计排行 就是你说的重排了吧,还要按照部门层级来做排名
    wmhx
        11
    wmhx  
       2020-05-12 16:52:16 +08:00
    一种情况一个 group 的 sql, 难么?
    先动手搞起来.
    huanghe314
        12
    huanghe314  
       2020-08-22 02:27:08 +08:00 via iPhone
    这有啥工作量,zset 往里放不就行了,只放每个人的就行,db 维护组织关系。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5106 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 07:58 PVG 15:58 LAX 23:58 JFK 02:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86