redis之架構(gòu)以及基本數(shù)據(jù)類型

redis由哪幾個模塊組成欺冀,每個模塊有什么用

訪問框架:動態(tài)鏈接庫侈离、網(wǎng)絡(luò)訪問框架
操作模塊:PUT试幽、DELETE、GET、SCAN【基本操作】铺坞,redis還有其他特殊操作對應(yīng)不同的數(shù)據(jù)類型
索引模塊:查詢數(shù)據(jù)
存儲模塊:基于內(nèi)存起宽,同時提供持久化數(shù)據(jù)功能

redis支持什么樣的格式存儲,每種數(shù)據(jù)支持哪些操作

  • key僅支持String
  • 對于value支持以下集中類型:
    字符串:String
    哈希表:Hash
    集合:Set
    排序集合:sorted Set
    壓縮列表: Compressed Set
  • 底層數(shù)據(jù)結(jié)構(gòu)一共有 6 種济榨,分別是簡單動態(tài)字符串坯沪、雙向鏈表、壓縮列表擒滑、哈希表腐晾、跳表和整數(shù)數(shù)組


    image.png
  • redis的key-value使用全局哈希表進(jìn)行存儲,其實就是一個數(shù)組丐一,數(shù)組的每個元素稱為一個哈希桶
    ??哈希桶中的 entry 元素中保存了key和value指針藻糖,分別指向了實際的鍵和值,這樣一來库车,即使值是一個集合巨柒,也可以通過*value指針被查找到
    image.png
  • 哈希沖突如何解決
    ??使用鏈?zhǔn)教幚矸ǎ霈F(xiàn)沖突時使用指針鏈接到同一個桶的鏈表后面柠衍,如圖所示


    image.png
  • rehash是什么以及如何解決大數(shù)據(jù)情境下rehash導(dǎo)致慢的問題
    rehash:rehash 也就是增加現(xiàn)有的哈希桶數(shù)量洋满,讓逐漸增多的 entry 元素能在更多的桶之間分散保存,減少單個桶中的元素數(shù)量珍坊,從而減少單個桶中的沖突牺勾;
    ??為了使 rehash 操作更高效,Redis 默認(rèn)使用了兩個全局哈希表:哈希表 1 和哈希表 2阵漏。一開始驻民,當(dāng)你剛插入數(shù)據(jù)時,默認(rèn)使用哈希表 1袱饭,此時的哈希表 2 并沒有被分配空間川无,隨著數(shù)據(jù)逐步增多,Redis 開始執(zhí)行 rehash虑乖,這個過程分為三步:
    1懦趋、給哈希表 2 分配更大的空間,例如是當(dāng)前哈希表 1 大小的兩倍疹味;
    2仅叫、把哈希表 1 中的數(shù)據(jù)重新映射并拷貝到哈希表 2 中;
    3糙捺、釋放哈希表 1 的空間诫咱。
  • Redis 采用了漸進(jìn)式 rehash,解決大數(shù)據(jù)情況下rehash導(dǎo)致慢的問題
    ??Redis 仍然正常處理客戶端請求洪灯,每處理一個請求時坎缭,從哈希表 1 中的第一個索引位置開始,順帶著將這個索引位置上的所有 entries 拷貝到哈希表 2 中;等處理下一個請求時掏呼,再順帶拷貝哈希表 1 中的下一個索引位置的 entries坏快。如下圖所示:


    image.png
  • 壓縮列表
    ??壓縮列表實際上類似于一個數(shù)組,數(shù)組中的每一個元素都對應(yīng)保存一個數(shù)據(jù)憎夷。和數(shù)組不同的是莽鸿,壓縮列表在表頭有三個字段 zlbytes、zltail 和 zllen拾给,分別表示列表長度祥得、列表尾的偏移量和列表中的 entry 個數(shù);壓縮列表在表尾還有一個 zlend蒋得,表示列表結(jié)束:


    image.png
  • 跳表
    ??有序鏈表只能逐一查找元素级及,導(dǎo)致操作起來非常緩慢,于是就出現(xiàn)了跳表额衙。具體來說创千,跳表在鏈表的基礎(chǔ)上,增加了多級索引入偷,通過索引位置的幾個跳轉(zhuǎn),實現(xiàn)數(shù)據(jù)的快速定位械哟,如下圖所示:


    image.png
  • 不同底層數(shù)據(jù)結(jié)構(gòu)的時間復(fù)雜度


    image.png

    -不同操作的復(fù)雜度
    單元素操作是基礎(chǔ)疏之;范圍操作非常耗時;統(tǒng)計操作通常高效暇咆;例外情況只有幾個锋爪。

redis的應(yīng)用場景,可以解決哪些問題

  • 緩存問題
  • 秒殺
  • 分布式鎖

參考資料

https://www.cnblogs.com/ysocean/p/9080942.html
https://time.geekbang.org/column/article/268253

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爸业,一起剝皮案震驚了整個濱河市其骄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扯旷,老刑警劉巖拯爽,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钧忽,居然都是意外死亡毯炮,警方通過查閱死者的電腦和手機(jī)娃循,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門竖瘾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笤受,你說我怎么就攤上這事大刊∥酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葫辐。 經(jīng)常有香客問我搜锰,道長,這世上最難降的妖魔是什么另患? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任纽乱,我火速辦了婚禮,結(jié)果婚禮上昆箕,老公的妹妹穿的比我還像新娘鸦列。我一直安慰自己,他們只是感情好鹏倘,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布薯嗤。 她就那樣靜靜地躺著,像睡著了一般纤泵。 火紅的嫁衣襯著肌膚如雪骆姐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天捏题,我揣著相機(jī)與錄音玻褪,去河邊找鬼。 笑死公荧,一個胖子當(dāng)著我的面吹牛带射,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播循狰,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼窟社,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绪钥?” 一聲冷哼從身側(cè)響起灿里,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎程腹,沒想到半個月后匣吊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡寸潦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年缀去,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甸祭。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缕碎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出池户,到底是詐尸還是另有隱情咏雌,我是刑警寧澤凡怎,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站赊抖,受9級特大地震影響统倒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氛雪,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一房匆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧报亩,春花似錦浴鸿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劲件,卻和暖如春掸哑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背零远。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工苗分, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牵辣。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓俭嘁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親服猪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容