V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
brazz
V2EX  ›  Redis

关于排行榜的程序设计

  •  
  •   brazz · May 12, 2020 · 6240 views
    This topic created in 2183 days ago, the information mentioned may be changed or developed.

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

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

    后者相同的数据可以把时间序列化成小数来做二维排序。
    brazz
        10
    brazz  
    OP
       May 12, 2020
    @wysnylc 他这种 今日、本月、上月、累计排行 就是你说的重排了吧,还要按照部门层级来做排名
    wmhx
        11
    wmhx  
       May 12, 2020
    一种情况一个 group 的 sql, 难么?
    先动手搞起来.
    huanghe314
        12
    huanghe314  
       Aug 22, 2020 via iPhone
    这有啥工作量,zset 往里放不就行了,只放每个人的就行,db 维护组织关系。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   827 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 22:40 · PVG 06:40 · LAX 15:40 · JFK 18:40
    ♥ Do have faith in what you're doing.