Redis系列8:Bitmap实现亿万级数据计算( 二 )

  • 如果想看1024的用户是否是在线状态(这边注意,key可能不存在,代表没有这个用户,这时候默认返回0),代码如下:
GETBIT online_statu 1024
  • 如果1024的用户退出系统,则为他执行下线,代码如下:
SETBIT online_statu 1024 0
  • 空间上的有效利用,1亿 人的状态存储只需要100000000/8/1024/1024 = 11.92 M,简单的数据结构也保证了性能上的优势 。
基于上面的讨论,我们可以总结出一个预评估公式,根据实际的数据量获取存储空间:( offset / 8 / 1024 / 1024 ) M3.2 固定周期的签到情况统计(周/月/年)固定周期可能是年/月/周,按照不同维度,可能有 365,31,7的bit位的统计周期 。假设这时候我们如果对于某个用户(如1024)全年的签到情况做统计,可以这么设计: