當(dāng)前位置:首頁(yè)>職場(chǎng)>redis中的幾種數(shù)據(jù)類(lèi)型(一文詳解Redis面試中常見(jiàn)的5種數(shù)據(jù)結(jié)構(gòu)及對(duì)應(yīng)使用場(chǎng)景)
發(fā)布時(shí)間:2024-01-24閱讀(22)
也當(dāng)過(guò)面試官,面試過(guò)不少應(yīng)聘者,因?yàn)槭俏易约赫腥俗约河茫晕也粫?huì)看應(yīng)聘者造火箭的技術(shù)有多牛比,只看擰螺絲的手藝瓷不瓷實(shí)。畢竟以后是一個(gè)整體,拖了大家后腿團(tuán)隊(duì)都很難受。面試的題目一般也不會(huì)太難,就像問(wèn)Redis,我只是想確認(rèn)他真正用過(guò)就夠了。Redis 5種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和簡(jiǎn)單操作要知道,最基本的要求,如果這個(gè)時(shí)候他會(huì)說(shuō)出每種數(shù)據(jù)結(jié)構(gòu)大致的應(yīng)用場(chǎng)景,那么這一定是加分的,起碼要比那些只會(huì)說(shuō)出幾種數(shù)據(jù)結(jié)構(gòu)后,在那干瞪眼等我問(wèn)下一個(gè)問(wèn)題的強(qiáng)很多,千萬(wàn)別冷場(chǎng)。

在任何一種編程語(yǔ)言里,字符串String都是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu), 那你有想過(guò)Redis中存儲(chǔ)一個(gè)字符串都進(jìn)行了哪些操作嘛?
在Redis中String是可以修改的,稱(chēng)為動(dòng)態(tài)字符串(Simple Dynamic String 簡(jiǎn)稱(chēng) SDS)(快拿小本本記名詞,要考的),說(shuō)是字符串但它的內(nèi)部結(jié)構(gòu)更像是一個(gè) ArrayList,內(nèi)部維護(hù)著一個(gè)字節(jié)數(shù)組,并且在其內(nèi)部預(yù)分配了一定的空間,以減少內(nèi)存的頻繁分配。
Redis的內(nèi)存分配機(jī)制是這樣:
這樣既保證了內(nèi)存空間夠用,還不至于造成內(nèi)存的浪費(fèi),字符串最大長(zhǎng)度為 512MB.。

上圖就是字符串的基本結(jié)構(gòu),其中 content 里面保存的是字符串內(nèi)容,0x