V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luw2007
V2EX  ›  程序员

面试题:设计一个活跃用户过滤器

  •  
  •   luw2007 · 2019-06-20 10:04:26 +08:00 · 1833 次点击
    这是一个创建于 1990 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据用户访问情况,设计一个判断用户是否近 60 天登陆过的接口。 要求实时线上验证接口,尽可能做到高效,最小存储,活跃用户月 UV 按照千万设计。

    防止有人说马后炮,放上 sha256 68ff01575b0c1f604cc3e6e3fc4a1cf69d6088ee001e037ece19befa652ed1a4

    6 条回复    2019-06-26 16:24:32 +08:00
    deming
        1
    deming  
       2019-06-20 10:55:14 +08:00
    使用 redis setbit
    第一天登录了 setbit user1 0 1
    第 3 天登录了 setbit user1 2 1
    ……

    判断登录天数 bitcount user1 start end
    luw2007
        2
    luw2007  
    OP
       2019-06-20 12:29:14 +08:00
    @deming 历史数据清除么? 也就是年末发了一波 push,冷用户都来了。然后 redis 内存爆炸了。
    jingxyy
        3
    jingxyy  
       2019-06-20 13:22:39 +08:00
    这不是记一个最近登陆日期就行了么?用户信息表里一般都有这个字段吧 查的时候判断一下记录值是不是在过去 60 天就行了
    KannaMakino
        4
    KannaMakino  
       2019-06-20 15:58:56 +08:00
    记录最后登陆时间。。
    leegoo
        5
    leegoo  
       2019-06-20 17:16:01 +08:00
    用户量很大的话,redis 把数据存这么长的时候会不会有点....
    luw2007
        6
    luw2007  
    OP
       2019-06-26 16:24:32 +08:00
    @leegoo 是的,如果用户量很大,redis 需要优化。不然直接 key/value 存储不就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2206 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:11 · PVG 09:11 · LAX 17:11 · JFK 20:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.