聊聊Redis數(shù)據(jù)結(jié)構(gòu)中的String類型

本篇文章帶大家一起了解一下redis數(shù)據(jù)結(jié)構(gòu)中的String類型,并聊聊redis的kv存儲(chǔ)結(jié)構(gòu),希望對(duì)大家有所幫助!

聊聊Redis數(shù)據(jù)結(jié)構(gòu)中的String類型

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é)省空間。

聊聊Redis數(shù)據(jù)結(jié)構(gòu)中的String類型

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ù)組,用’

国产精品伊人久久伊人电影| 国产一区二区精品久久凹凸| 久久久久亚洲精品日久生情| 久久精品国产亚洲αv忘忧草| 久久99精品久久只有精品| 久久精品免费网站网| 人妻少妇精品久久| 浪潮AV色综合久久天堂| 91久久精品电影| 精品久久久久久中文字幕大豆网| 久久人人爽人人爽人人片av麻烦| 日批日出水久久亚洲精品tv| 伊人 久久 精品| 久久精品草草草| 亚洲精品乱码久久久久久久久久久久 | 日日狠狠久久偷偷色综合96蜜桃 | 久久久九九有精品国产| 久久精品成人免费国产片小草| 国产精品久久久久蜜芽| 国产精品美女久久久久久2018| 18岁日韩内射颜射午夜久久成人| 久久久久亚洲AV成人网人人网站 | 久久久久久一区国产精品| 无码久久精品国产亚洲Av影片| 国产99久久久国产精免费| 午夜福利91久久福利| 久久精品国产亚洲av日韩| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 97香蕉久久夜色精品国产| 77777亚洲午夜久久多喷| 2021国产精品午夜久久| 精品久久久久久国产牛牛app| 久久久久久久97| 亚洲欧美另类日本久久国产真实乱对白 | 性做久久久久久久久久久| 国产一区二区三区久久| 日韩乱码人妻无码中文字幕久久 | 久久播电影网| 久久久久久久99精品免费观看| 久久精品国产久精国产思思| 漂亮人妻被中出中文字幕久久 |