redis的位图是一个好东西,经常用于数据统计、在线人数统计等。但不是什么基数级别都适合的。
之前写在线人数统计、活跃统计等直接用位图非常方便,用户数据也没有超过几千万,但是偏移量大了就出问题了,消耗了所有的内存!!!
setbit key offset value
value存放值,只能是0或者1
offset即偏移量,不建议过大
打个比方:
1000000 级别存放1w数据大概占用200kb
10000000 级别存放1w数据大概占用3M
100000000 级别存放1条数据大概占用17M
1000000000 级别存放1条数据大概占用125M
大概的空间占用计算公式是:($offset/8/1024/1024) MB
所以用户基数大于1000w的时候占用空间就很大了,当用户基数
总结:当偏移量太大时不宜使用位图功能,否则内存会别消耗殆尽!