Redis

1.指針函數(shù)與函數(shù)指針

指針函數(shù)本質(zhì)是指針,其返回值是指針。如 float *fun(); 函數(shù)指針,本質(zhì)是指針。如int(*f) (intx);/*聲明一個(gè)函數(shù)指針*/ ?從直觀上看*號(hào)要是和函數(shù)名括在一起那么是函數(shù)指針 沒有的括在一起的話是指針函數(shù)。

2.Redis鏈表類型

I.節(jié)點(diǎn)是雙端鏈表

II.鏈表(list)除了有頭指針,尾指針還包括鏈表長度。

3.Redis字典

I.三個(gè)重要結(jié)構(gòu):字典->哈希表->哈希節(jié)點(diǎn)

1) 字典包括大小為2的哈希表數(shù)組。哈希表結(jié)構(gòu)中又包括哈希表節(jié)點(diǎn)數(shù)組。哈希節(jié)點(diǎn)有后繼節(jié)點(diǎn)。即:哈希表節(jié)點(diǎn)數(shù)組每個(gè)元素指向哈希節(jié)點(diǎn)鏈表

2) 為了提高插入效率都是在哈希表節(jié)點(diǎn)均在前面插入,新插入的節(jié)點(diǎn)會(huì)成為頭節(jié)點(diǎn)。

3)字典中哈希表(一般使用ht[0]進(jìn)行操作,ht[1]用于rehash。rehash結(jié)束后兩個(gè)數(shù)組交換,并釋放交換后的ht[1]的空間)

4)MurmurHash2算法計(jì)算哈希值;地址鏈接法解決hash沖突

II. rehash

1).負(fù)載因子=實(shí)際哈希節(jié)點(diǎn)數(shù) / 哈希節(jié)點(diǎn)數(shù)組大小 【load_factor = ht[0].used / ht[0].size】。負(fù)載因子越大空間開銷越小,查找越慢。

2).觸發(fā)時(shí)機(jī):

? ? a) 負(fù)載因子大于5或者(load_factor >= 1且執(zhí)行BGSABE或BGREWRITEAOF命令時(shí)哈希表擴(kuò)張。 ??

? ? b)load_factor < 0.1 觸發(fā)哈希表收縮。

3).漸進(jìn)式rehash

? ? a)? 開始期間字典中的rehashIndex字段大于-1,rehash結(jié)束rehashIndex重置為-1。

? ? b) rehash期間維護(hù)兩個(gè)哈希表:查找的時(shí)候現(xiàn)在ht[0]中查找,若不成功再去ht[1查找;要是添加的話直接在hash[1]中進(jìn)行,保證ht[0]只減不增.

4.跳躍表

5.整數(shù)集合(intset)

I.有序且不重復(fù)

6.壓縮列表(ziplist)

I.節(jié)點(diǎn):previous_enrty_length,encoding,content組成

1)previous_enrty_length 前一個(gè)節(jié)點(diǎn)的長度

2)encoding:數(shù)據(jù)類型 + 數(shù)據(jù)長度

00,10,10開頭表示字節(jié)數(shù)據(jù)類型,11開頭表示為整數(shù)。

其中00 開頭表示編碼長度為1字節(jié),后6位表示數(shù)組實(shí)際長度,且content字節(jié)數(shù)組長度<=63;

其中01 開頭表示編碼長度為2字節(jié),后14位表示數(shù)組實(shí)際長度,content字節(jié)數(shù)組長度<=16383;

其中10開頭表示編碼長度為5字節(jié),后32位表示數(shù)組實(shí)際長度,content字節(jié)數(shù)組長度<=4294967295。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字典 Redis 中的字典 由 dict.h/dict 結(jié)構(gòu)表示: type 和 privdata 是針對(duì)不同類型...
    jiangmo閱讀 619評(píng)論 2 0
  • 引入 Redis對(duì)外提供了5種類型:字符串、列表、集合、有序集合以及哈希表,但底層實(shí)現(xiàn)并不是固定的,以上五種數(shù)據(jù)結(jié)...
    宇宙最強(qiáng)架構(gòu)師閱讀 705評(píng)論 0 3
  • 字典,又稱符號(hào)表,是保存鍵值對(duì)的抽象數(shù)據(jù)結(jié)構(gòu)。很多語言都內(nèi)置字典這種常用的數(shù)據(jù)結(jié)構(gòu),但是C語言沒有內(nèi)置,所以red...
    舒小賤閱讀 1,367評(píng)論 0 2
  • 寫這篇文章的時(shí)候正處于從無錫回南京(家)的高鐵上,看著窗兩側(cè)的世界向后快速奔跑;也幻想著推開家門那一刻孩子看我驚訝...
    康莊大道2017閱讀 250評(píng)論 0 0
  • 我有個(gè)哥哥,盡管我基本上沒有叫過他哥哥,因?yàn)樗槐任掖?個(gè)月,我們來自一個(gè)族系,本家那種,從小在一個(gè)班級(jí),直到初中...
    7f8903e23e9e閱讀 179評(píng)論 0 0

友情鏈接更多精彩內(nèi)容