1、亿级用户日活统计如何用Redis快速计算?
位图bitmap文档
在redis 2.2.0版本之后,新增了一个位图数据,其实它不是一种数据结构。实际上它就是一个一个字符串结构(涉及单个bitmap可存储最大值问题),只不过value是一个二进制数据,每一位只能是0或者1。redis单独对bitmap提供了一套命令。可以对任意一位进行设置和读取。
bitcount
bitop
如果key是比较小,正常情况是不会出现这种情况的哦,因此在超大量数据下,使用bitmap还有待商榷,但是在数据量不是很大,但是对统计要求精确的场景,可以使用此方案。
注意:
BITOP 的复杂度为 O(N) ,当处理大型矩阵(matrix)或者进行大数据量的统计时,最好将任务指派到附属节点(slave)进行,同时最好在服务闲时阶段进行执行,避免阻塞主节点。
其他方案:HyperLogLog
参考文章
2、Redis底层ZSet跳表是如何设计与实现的?
3、类似微信的社交App朋友关注模型如何设计实现?
4、如何设计高性能电商推荐系统?
5、CMS的并发更新失败是怎么回事?如何优化?
6、高并发系统为何建议选择G1垃圾收集器?
7、线上系统GC问题如何快速定位与分析?阿里巴巴的Arthas用过吗?
8、单机几十万并发的系统JVM如何优化?
9、解释下JVM垃圾收集底层的三色标记算法?
10、Spring 底层事件多播器是如何设计的?
11、Spring 源码底层是如何解决循环依赖问题的?
12、Redis分布式锁主从架构锁失效问题如何解决?
13、对于ZooKeeper的羊群效应,分布式锁实现应如何优化?
14、如果遇到ZooKeeper脑裂问题,分布式锁应该如何保证健壮性?
15、超大并发的分布式锁架构该如何设计?
16、从CAP角度解释下Redis&Zookeeper锁架构异同?