聊聊Redis數據結構中的String類型

本篇文章帶大家一起了解一下redis數據結構中的String類型,并聊聊redis的kv存儲結構,希望對大家有所幫助!

聊聊Redis數據結構中的String類型

Redis常用作分布式KV緩存,很多人僅僅只會使用,卻不知道底層卻有著很多不為人知的秘密。【相關推薦:Redis視頻教程

String類型

String作為Redis支持的最基礎的數據類型,首先我們來看下String,他的數據結構和存儲是怎么樣的。

重新定義SDS 去存儲String

眾所周知,redis是用c語言進行編寫的,而c語言是沒有String類型的,只有char[],并且在初始化的是時候就必須大小指定類型后就不能改變。為了實現動態增加和擴展等功能,如incr命令,append命令,所以redis就自己定義維護了一個SDS(Simple Dynamic String)來實現這些功能。

我們先來看一下redis源碼中定義的數據結構,這里有5種類型,目的是為了節省空間。

聊聊Redis數據結構中的String類型

1、len:獲取char[]的長度,需要遍歷數組,len(char[])時間復雜度O(n);
2、alloc:c語言沒有String類型, 只有char[],且char[]必須先分配空間長度,char[]預先分配了長度,數據增長后需要擴容;

3、falgs:總是占用一個字節。其中的最低3個bit用來表示header的類型。header的類型共有5種,在sds.h中有常量定義。
4、buf[]:c語言的char數組,用’

97久久香蕉国产线看观看| 久久香蕉超碰97国产精品 | AV无码久久久久不卡蜜桃| 久久九九全国免费| 18禁黄久久久AAA片| 色欲久久久天天天综合网| 久久久久久午夜成人影院| 欧美久久一区二区三区| 狠狠干狠狠久久| 精品久久久久久国产91| 欧美伊人久久大香线蕉综合69| 免费精品久久天干天干| 91精品国产91久久久久久青草 | 99久久99久久精品国产片果冻 | 日产精品久久久久久久性色| 久久91精品国产91久久小草| 武侠古典久久婷婷狼人伊人| av午夜福利一片免费看久久| 久久婷婷色香五月综合激情| 久久精品国产亚洲一区二区三区| 国产Av激情久久无码天堂| 日本加勒比久久精品| 国产AV影片久久久久久 | 国产精品99久久久久久猫咪| 色欲久久久天天天综合网精品 | 99久久精品九九亚洲精品| 人妻精品久久无码专区精东影业| 国产精品无码久久久久| 国产精品久久亚洲不卡动漫| 久久综合九色综合网站| 亚洲а∨天堂久久精品| 久久精品无码一区二区app| 久久久久一区二区三区| 久久夜色tv网站| 色偷偷888欧美精品久久久| 久久本道伊人久久| 久久九九亚洲精品| 亚洲午夜久久久精品影院| 国产激情久久久久影院老熟女免费| 国产精品一久久香蕉国产线看观看| 亚洲αv久久久噜噜噜噜噜|