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

2019-06-20 10:04:26 +08:00
 luw2007

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

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

1667 次点击
所在节点    程序员
6 条回复
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
2019-06-20 12:29:14 +08:00
@deming 历史数据清除么? 也就是年末发了一波 push,冷用户都来了。然后 redis 内存爆炸了。
jingxyy
2019-06-20 13:22:39 +08:00
这不是记一个最近登陆日期就行了么?用户信息表里一般都有这个字段吧 查的时候判断一下记录值是不是在过去 60 天就行了
KannaMakino
2019-06-20 15:58:56 +08:00
记录最后登陆时间。。
leegoo
2019-06-20 17:16:01 +08:00
用户量很大的话,redis 把数据存这么长的时候会不会有点....
luw2007
2019-06-26 16:24:32 +08:00
@leegoo 是的,如果用户量很大,redis 需要优化。不然直接 key/value 存储不就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575713

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX