如何使用复述+位图实现亿级海量数据统计

  介绍

这篇文章给大家分享的是有关如何使用复述+位图实现亿级海量数据统计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

寄语

多分享多付出,前期多给别人创造价值并且不计回报,从长远来看,这些付出都会成倍的回报你。

特别是刚开始跟别人合作的时候,不要去计较短期的回报,没有太大意义,更多的是锻炼自己的视野,视角以及解决问题的能力。

二值状态统计

码哥,什么是二值状态统计呀?

也就是集合中的元素的值只有0和1两种,在签到打卡和用户是否登陆的场景中,只需记录<代码>签到(1)或<代码>未签到(0),<代码>已登录(1)或<代码>未登陆(0)

假如我们在判断用户是否登陆的场景中使用复述的字符串类型实现(<强>键→userId,价值→0表示下线,1 -登陆),假如存储100年万个用户的登陆状态,如果以字符串的形式存储,就需要存储100年万个字符串了,内存开销太大。

码哥,为什么字符串类型内存开销大?

字符串类型除了记录实际数据以外,还需要额外的内存记录数据长度,空间使用等信息。

当保存的数据包含字符串,字符串类型就使用简单动态字符串(SDS)结构体来保存,如下图所示:

如何使用复述+位图实现亿级海量数据统计

<李>

<强> len :占4个字节,表示缓冲区的已用长度。

<李>

<强> alloc :占4个字节,表示buf实际分配的长度,通常在;null   null   null   null

如何使用复述+位图实现亿级海量数据统计