一种千万级用户实时统计用户数的简单实现
场景:微信小程序注册用户已经接近千万,而且分为实名用户和非实名用户,openId为小程序的用户id,一个实名用户可以有多个微信,所以可以多次注册,但是实名信息为同一个人 。
需求:实时显示用户增长量,实名用户量,实名去重用户数,最近七日的用户变化曲线等 。
实现:spring aop + redis atomlong + crontab shell脚本
思路:
【一种千万级用户实时统计用户数的简单实现】1、每天凌晨3点执行一次定时任务,从msyql从库读取用户数据,做以上处理,然后获得统计数据作为基准值,写入redis 。
2、aop对用户表的update、insert操做进行拦截处理,由于业务场景一般对用户都是逻辑删除,所以不需要去切delete操作 。
3、根据update中的实名参数信息判断该次update是不是实名数据更新,通过实时根据身份证去查之前该用户是否已经有其他微信号进行过实名(这里有一次数据库的交互,对身份证号要建索引) 。
insert操作肯定是用户的增长,这个很好理解 。
4、redis中根据业务key+日期的方式对一周内数据进行缓存,用于页面展示一周用户增长曲线 。
5、具体切面的核心代码如下:
文章插图
文章插图
文章插图
文章插图
文章插图
推荐阅读
- 轻量级低侵入式在线构建、自动部署、日常运维、项目监控软件
- 男士瑜伽入门基本动作
- 什么是PC砖? pc是什么材料
- 固态硬盘|长江存储首发企业顶级PCIe 4.0 SSD!7.68TB惊人容量
- 运动会作文 运动会作文600字六年级
- 华为|HarmonyOS 3更新日志流出:交互逻辑升级明显
- 雅鹿有几个牌子 雅鹿是什么档次的牌子
- 25个超级搞笑脑筋急转弯 搞笑的脑筋急转弯
- 是一种灾害性天气现象还是 雾霾是什么
- 饵料|男子人生第一次垂钓,罕见收获了米级翘嘴,网友:从此走上不归路