發(fā)布時間:2024-01-24閱讀(15)
也當(dāng)過面試官,面試過不少應(yīng)聘者,因為是我自己招人自己用,所以我不會看應(yīng)聘者造火箭的技術(shù)有多牛比,只看擰螺絲的手藝瓷不瓷實。畢竟以后是一個整體,拖了大家后腿團(tuán)隊都很難受。面試的題目一般也不會太難,就像問Redis,我只是想確認(rèn)他真正用過就夠了。Redis 5種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和簡單操作要知道,最基本的要求,如果這個時候他會說出每種數(shù)據(jù)結(jié)構(gòu)大致的應(yīng)用場景,那么這一定是加分的,起碼要比那些只會說出幾種數(shù)據(jù)結(jié)構(gòu)后,在那干瞪眼等我問下一個問題的強(qiáng)很多,千萬別冷場。

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

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