原文首发于公众号【豆仔gogo】,转载务必保留相关相关链接及文章全部图文。redis如何做亿级用户登录日活统计?(内含资料)mp.weixin.qq.com
面试真题:如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量?
方案一:使用string(排除)
如何用合适的数据类型来存储1亿用户的数据,用普通的字符串来存储肯定不行。经过查看一个最简单的kv(key为aaa,value为1)的内存占用,发现为48byte。
假设每个用户每天登陆需要占据1对KV的话,那一亿就是(48*100000000)/1024/1024/1024=4.47G。这还是一天的量。
方案二:bitmap
1、bitmap介绍
在redis 2.2.0版本之后,新增了一个位图数据,其实它不是一种数据结构。实际上它就是一个一个字符串结构(涉及单个bitmap可存储最大值问题),只不过value是一个二进制数据,每一位只能是0或者1。redis单独对bitmap提供了一套命令。可以对任意一位进行设置和读取。
主要命令有:
相关语法为:SETBIT key offset value
GETBIT key offset
BITCOUNT key [start] [end]
BITOP operation destkey key [key …]
注意事项: