面試官:redis包含哪些數(shù)據(jù)結(jié)構(gòu)啊豫喧?
我:strings 石洗、lists、sets紧显、sorted sets讲衫、hashes、bitmaps孵班、hyperloglogs涉兽、geospatial indexes、streams篙程。
面試官:等等花椭,strings到hashes這些我都知道,bitmaps房午、hyperloglogs矿辽、geospatial indexes、streams都是什么鬼啊袋倔?
我:bitmap雕蔽,其本質(zhì)是定一個在string上的bit集合。最大長度512m宾娜,也就是2的32次冪個bit批狐。其最大優(yōu)點是,節(jié)省空間前塔。舉個例子嚣艇,在系統(tǒng)中用戶id是有序增長的,完全可以用512m內(nèi)存代表40億用戶的狀態(tài)华弓,因為每個用戶1bit食零。
通常的用法:
1 實時分析
2 用id在節(jié)省空間的同時保證性能
比如有一個需求是查從網(wǎng)站開始建站時起,訪問次數(shù)最多的用戶寂屏。只需從建站開始贰谣,每天記1bit,index的值為當前時間減建站時間再轉(zhuǎn)化為天迁霎。這樣每個用戶都有一個string來代表訪問信息吱抚。用bitcount操作很容易得到每個用戶的訪問天數(shù)。然后就轉(zhuǎn)化為從眾多值取最大的算法問題考廉。
其他類型balabala
面試官:你從哪里學(xué)到這些的秘豹?
我:要關(guān)注官方twitter、經(jīng)常逛reddit昌粤、redis官網(wǎng)基本上就可以了憋肖。
面試官:快來上班吧。