本篇文章帶大家一起了解一下redis數(shù)據(jù)結(jié)構(gòu)中的String類型,并聊聊redis的kv存儲(chǔ)結(jié)構(gòu),希望對(duì)大家有所幫助!
Redis常用作分布式KV緩存,很多人僅僅只會(huì)使用,卻不知道底層卻有著很多不為人知的秘密。【相關(guān)推薦:Redis視頻教程】
String類型
String作為Redis支持的最基礎(chǔ)的數(shù)據(jù)類型,首先我們來看下String,他的數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)是怎么樣的。
重新定義SDS 去存儲(chǔ)String
眾所周知,redis是用c語(yǔ)言進(jìn)行編寫的,而c語(yǔ)言是沒有String類型的,只有char[],并且在初始化的是時(shí)候就必須大小指定類型后就不能改變。為了實(shí)現(xiàn)動(dòng)態(tài)增加和擴(kuò)展等功能,如incr命令,append命令,所以redis就自己定義維護(hù)了一個(gè)SDS(Simple Dynamic String)來實(shí)現(xiàn)這些功能。
我們先來看一下redis源碼中定義的數(shù)據(jù)結(jié)構(gòu),這里有5種類型,目的是為了節(jié)省空間。
1、len:獲取char[]的長(zhǎng)度,需要遍歷數(shù)組,len(char[])時(shí)間復(fù)雜度O(n);
2、alloc:c語(yǔ)言沒有String類型, 只有char[],且char[]必須先分配空間長(zhǎng)度,char[]預(yù)先分配了長(zhǎng)度,數(shù)據(jù)增長(zhǎng)后需要擴(kuò)容;
3、falgs:總是占用一個(gè)字節(jié)。其中的最低3個(gè)bit用來表示header的類型。header的類型共有5種,在sds.h中有常量定義。
4、buf[]:c語(yǔ)言的char數(shù)組,用’
亚洲日本va午夜中文字幕久久|
久久精品夜夜夜夜夜久久|
久久美女网站免费|
久久久久一本毛久久久|
久久久久久精品久久久久|
97精品伊人久久大香线蕉app|
99久久人人爽亚洲精品美女|
久久亚洲sm情趣捆绑调教|
国内精品久久久久影院免费
|
热99RE久久精品这里都是精品免费
|
久久精品国产99国产精品导航
|
午夜精品久久久久久久久|
久久久国产精品网站|
亚洲综合伊人久久综合|
狠狠精品久久久无码中文字幕|
无码AV波多野结衣久久|
国内精品久久久久久久亚洲|
久久精品亚洲精品国产色婷|
亚洲七七久久精品中文国产
|
狠狠精品干练久久久无码中文字幕|
99精品久久久久久久婷婷|
久久精品综合一区二区三区|
国内精品伊人久久久久AV影院|
噜噜噜色噜噜噜久久|
青青青青久久精品国产h久久精品五福影院1421
|
亚洲v国产v天堂a无码久久|
四虎国产精品免费久久5151|
久久久久久久久久久久中文字幕|
精品久久久久久无码不卡|
久久亚洲中文字幕精品一区|
国产高潮久久免费观看|
久久精品一区二区三区不卡|
精品精品国产自在久久高清|
久久久久无码精品国产不卡|
久久人人爽人人爽人人片av高请
|
亚洲国产天堂久久综合网站|
久久AV高清无码|
日本精品久久久中文字幕|
99久久99久久精品国产片|
久久综合九色综合久99|
国产成人精品久久亚洲高清不卡 |