這么搞,10 億數(shù)據(jù)量只需要 100MB 內(nèi)存
閱讀本文大概需要 4 分鐘。
來(lái)自:toutiao.com/i6767642839267410445
操作系統(tǒng):Mac OS 64位 版本:Redis 5.0.7 64 bit 運(yùn)行模式:standalone mode
redis位操作

SETBIT

GETBIT

BITCOUNT

BITOP

底層數(shù)據(jù)結(jié)構(gòu)分析
struct?sdshdr?{
?#記錄buff數(shù)組中已使用字節(jié)的數(shù)量
?#也是SDS所保存字符串的長(zhǎng)度
?int?len;
?#記錄buff數(shù)組中未使用字節(jié)的數(shù)量
?int?free;
?#字節(jié)數(shù)組,字符串就存儲(chǔ)在這個(gè)數(shù)組里
?char?buff\[\];
}

時(shí)間復(fù)雜度為O(1) 杜絕緩沖區(qū)溢出 減少修改字符串長(zhǎng)度時(shí)候所需的內(nèi)存重分配次數(shù) 二進(jìn)制安全的API操作 兼容部分C字符串函數(shù)

1Byte=8bit 1KB=1024Byte 1MB=1024KB 1GB=1024MB
0?0?0?0?0?0?0?0
0?0?0?0?1?0?0?0
#對(duì)應(yīng)redis操作即:
setbit?key?3?1
setbit?key?13?1
#對(duì)應(yīng)redis中的存儲(chǔ)為:
0?0?1?0?|?0?0?0?0?|?0?0?0?0?|?1?0?0?0
時(shí)間復(fù)雜度
存儲(chǔ)空間計(jì)算
應(yīng)用場(chǎng)景
用戶(hù)簽到場(chǎng)景
活躍用戶(hù)數(shù)統(tǒng)計(jì)
用戶(hù)是否在線(xiàn)以及總在線(xiàn)人數(shù)統(tǒng)計(jì)
APP內(nèi)用戶(hù)的全局消息提示小紅點(diǎn)
推薦閱讀:
交公糧了:十一在家我都逛哪些技術(shù)網(wǎng)站?
微信掃描二維碼,關(guān)注我的公眾號(hào)
朕已閱?
評(píng)論
圖片
表情

