这么搞,10 亿数据量只需要 100MB 内存
阅读本文大概需要 4 分钟。
来自:toutiao.com/i6767642839267410445
操作系统:Mac OS 64位 版本:Redis 5.0.7 64 bit 运行模式:standalone mode
redis位操作
SETBIT
GETBIT
BITCOUNT
BITOP
底层数据结构分析
struct sdshdr {
#记录buff数组中已使用字节的数量
#也是SDS所保存字符串的长度
int len;
#记录buff数组中未使用字节的数量
int free;
#字节数组,字符串就存储在这个数组里
char buff\[\];
}
时间复杂度为O(1) 杜绝缓冲区溢出 减少修改字符串长度时候所需的内存重分配次数 二进制安全的API操作 兼容部分C字符串函数
1Byte=8bit 1KB=1024Byte 1MB=1024KB 1GB=1024MB
0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
#对应redis操作即:
setbit key 3 1
setbit key 13 1
#对应redis中的存储为:
0 0 1 0 | 0 0 0 0 | 0 0 0 0 | 1 0 0 0
时间复杂度
存储空间计算
应用场景
用户签到场景
活跃用户数统计
用户是否在线以及总在线人数统计
APP内用户的全局消息提示小红点
推荐阅读:
微信扫描二维码,关注我的公众号
朕已阅
评论