介绍
这篇文章给大家分享的是有关如何使用复述+位图实现亿级海量数据统计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
寄语
多分享多付出,前期多给别人创造价值并且不计回报,从长远来看,这些付出都会成倍的回报你。
特别是刚开始跟别人合作的时候,不要去计较短期的回报,没有太大意义,更多的是锻炼自己的视野,视角以及解决问题的能力。
引用>二值状态统计
码哥,什么是二值状态统计呀?
引用>也就是集合中的元素的值只有0和1两种,在签到打卡和用户是否登陆的场景中,只需记录<代码>签到(1)代码>或<代码>未签到(0)代码>,<代码>已登录(1)代码>或<代码>未登陆(0)代码>。
假如我们在判断用户是否登陆的场景中使用复述的字符串类型实现(<强>键→userId,价值→0表示下线,1 -登陆强>),假如存储100年万个用户的登陆状态,如果以字符串的形式存储,就需要存储100年万个字符串了,内存开销太大。
码哥,为什么字符串类型内存开销大?
引用>字符串类型除了记录实际数据以外,还需要额外的内存记录数据长度,空间使用等信息。
当保存的数据包含字符串,字符串类型就使用简单动态字符串(SDS)结构体来保存,如下图所示:
<李>
<强> len 强>:占4个字节,表示缓冲区的已用长度。
李> <李><强> alloc 强>:占4个字节,表示buf实际分配的长度,通常在;null null null null
如何使用复述+位图实现亿级海量数据统计