更新時(shí)間:2021-04-02 來源:黑馬程序員 瀏覽量:
(1)問題分析
考官主要想考察應(yīng)聘者對(duì)Redis數(shù)據(jù)的理解和拓展,有沒有深入的去理解過數(shù)據(jù)庫(kù)。
(2)核心問題講解
列表對(duì)象的編碼可以是ziplist或者linkedlist。
ziplist是一種壓縮鏈表,它的好處是更能節(jié)省內(nèi)存空間,因?yàn)樗鎯?chǔ)的內(nèi)容都是在連續(xù)的內(nèi)存區(qū)域當(dāng)中的。當(dāng)列表對(duì)象元素不大,每個(gè)元素也不大的時(shí)候,就采用ziplist存儲(chǔ)。但當(dāng)數(shù)據(jù)量過大時(shí)就ziplist就不是那么好用了。因?yàn)闉榱吮WC他存儲(chǔ)內(nèi)容在內(nèi)存中的連續(xù)性,插入的復(fù)雜度是O(N),即每次插入都會(huì)重新進(jìn)行realloc。對(duì)象結(jié)構(gòu)中ptr所指向的就是一個(gè)ziplist。整個(gè)ziplist只需要malloc一次,它們?cè)趦?nèi)存中是一塊連續(xù)的區(qū)域。
linkedlist是一種雙向鏈表。它的結(jié)構(gòu)比較簡(jiǎn)單,節(jié)點(diǎn)中存放pre和next兩個(gè)指針,還有節(jié)點(diǎn)相關(guān)的信息。當(dāng)每增加一個(gè)node的時(shí)候,就需要重新malloc一塊內(nèi)存。
(3)問題擴(kuò)展
獲取當(dāng)前同時(shí)還會(huì)問Redis數(shù)據(jù)庫(kù)有幾種數(shù)據(jù)類型,然后深入去問比如有沒有深入了解過Redis,說說Redis里面list的底層實(shí)現(xiàn),說說set數(shù)據(jù)類型為何支持去重等等,是一類拓展的問題。
(4)結(jié)合項(xiàng)目中使用
說說你做過的項(xiàng)目里哪些地方用到了Redis數(shù)據(jù)庫(kù)。
為什么要在項(xiàng)目中使用Redis數(shù)據(jù)庫(kù)。
猜你喜歡:
redis緩存原理與實(shí)現(xiàn):為什么redis可以做緩存?【python面試題】