首頁 常見問題 正文
聚名企服

redis數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)是怎樣的?

轉(zhuǎn)載 2021-12-20 16:01:16 6973
redis數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)是怎樣的?實(shí)現(xiàn)方法:1、每種數(shù)據(jù)結(jié)構(gòu)都有自己底層的內(nèi)部編碼實(shí)現(xiàn),而且是多種實(shí)現(xiàn),這樣Redis會(huì)在合適的場(chǎng)景選擇合適的內(nèi)部編碼;2、每種數(shù)據(jù)結(jié)構(gòu)都有兩種以上的內(nèi)部編碼實(shí)現(xiàn);3、內(nèi)部編碼可以作為多種外部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部實(shí)現(xiàn)。

redis數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)是怎樣的?

Redis有五種基本數(shù)據(jù)結(jié)構(gòu):字符串、hash、set、zset、list。下面解釋下載Redis 3.0.6版本中底層是怎樣實(shí)現(xiàn)他們的。

總結(jié)一下

(1)每種數(shù)據(jù)結(jié)構(gòu)都有自己底層的內(nèi)部編碼實(shí)現(xiàn),而且是多種實(shí)現(xiàn),這樣Redis會(huì)在合適的場(chǎng)景選擇合適的內(nèi)部編碼。

(2)可以看到每種數(shù)據(jù)結(jié)構(gòu)都有兩種以上的內(nèi)部編碼實(shí)現(xiàn),例如string數(shù)據(jù)結(jié)構(gòu)就包含了raw、int和embstr三種內(nèi)部編碼。

(3)同時(shí),有些內(nèi)部編碼可以作為多種外部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部實(shí)現(xiàn),例如ziplist就是hash、list和zset共有的內(nèi)部編碼。

動(dòng)態(tài)字符串SDS

SDS是“simple dynamic string”的縮寫。Redis中所有場(chǎng)景出現(xiàn)的字符串,基本都是有SDS來實(shí)現(xiàn)的:

所有非數(shù)字的key, 如:set msg “hello” 中的key msg

字符串?dāng)?shù)據(jù)類型的值,如:set msg “hello” 中的value “hello”

非字符串?dāng)?shù)據(jù)類型中的“字符串值”,如:rpush fruits “apple” “banana"中的"apple” “banana”

SDS長這樣:

redis數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)是怎樣的?

free:還剩多少空間

len:字符串長度

buf:存放的字符數(shù)組

空間預(yù)分配

為減少修改字符串代理的內(nèi)存重分配次數(shù),SDS采用了“一次管夠“的策略:

若修改之后SDS長度 < 1MB,則多分配現(xiàn)有l(wèi)en長度的空間

若修改之后SDS長度 >= 1MB ,則擴(kuò)充除了滿足修改之后的長度外,額外多1MB空間。

惰性空間釋放

為避免縮短字符串時(shí)候的內(nèi)存重分配操作,SDS在數(shù)據(jù)減少時(shí),并不立刻釋放空間。

int

就是redis中存放的各種數(shù)字,包括故意加“”的

set game “111”

雙向鏈表

雙向鏈表如lpush, rpush, lpop, rpop

長這樣:

 

分兩部分:

“統(tǒng)籌部分”:橘黃色

head:指向具體雙向鏈表的頭

tail:指向具體雙向鏈表的尾

len:雙向鏈表的長度

“具體實(shí)施方”:藍(lán)色

有前驅(qū)pre和后繼next

雙向鏈表由 list 和 listNode 兩個(gè)數(shù)據(jù)結(jié)構(gòu)構(gòu)成。

聲明:本文轉(zhuǎn)載于:互聯(lián)網(wǎng),如有侵犯,請(qǐng)聯(lián)系service@Juming.com刪除
相關(guān)標(biāo)簽: redis數(shù)據(jù)結(jié)構(gòu)

相關(guān)文章

相關(guān)專題

編輯推薦

  • 域名注冊(cè)專題合集 域名注冊(cè)專題合集

  • 域名搶注專題合集 域名搶注專題合集

  • 企業(yè)建站專題合集 企業(yè)建站專題合集

主站蜘蛛池模板: 无码高潮爽到爆的喷水视频app| 亚洲熟妇无码AV不卡在线播放| 亚洲av无码天堂一区二区三区 | 亚洲中文字幕久久精品无码VA| 无码人妻精品一区二区三区久久久| 天堂无码在线观看| 人妻少妇偷人精品无码| 日韩成人无码一区二区三区| 亚洲精品无码不卡在线播放HE| 丰满少妇人妻无码专区| 无码午夜人妻一区二区三区不卡视频 | 欧洲黑大粗无码免费| 中文无码制服丝袜人妻av| 国产在线拍揄自揄拍无码视频| 国产午夜精品无码| 亚洲免费无码在线| 国产精品无码一区二区三区不卡 | 亚洲国产精品无码久久| 国产精品无码一区二区三级 | AV无码小缝喷白浆在线观看| 久久亚洲AV无码精品色午夜 | 亚洲AV无码久久精品成人| 日韩乱码人妻无码中文字幕视频| 亚洲中文字幕无码中文字在线| 影音先锋无码a∨男人资源站 | 国产精品无码一二区免费| av无码国产在线看免费网站| 亚洲国产精品无码专区| 亚洲一区爱区精品无码| 免费无码又爽又刺激网站| 日韩专区无码人妻| 潮喷无码正在播放| 精品无码人妻久久久久久| 狠狠精品久久久无码中文字幕| 免费无码又爽又黄又刺激网站| 国产免费AV片无码永久免费| 国产乱人伦无无码视频试看 | 无码被窝影院午夜看片爽爽jk| 亚洲AV无码乱码麻豆精品国产| 亚洲AV综合色区无码二区偷拍| 亚洲视频无码高清在线|