redis初識

redis是Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型激捏、Key-Value數(shù)據(jù)庫,并提供多種語言的API凄吏,那我們?yōu)槭裁匆褂胷edis呢远舅?

為什么使用redis
目錄
  • Redis為什么速度這么快?
  • 談?wù)凴edis有哪些應(yīng)用場景?
  • 一對多的關(guān)系表,使用Redis設(shè)計會用到哪些數(shù)據(jù)結(jié)構(gòu)類型?
  • Redis的ZSet集合應(yīng)用場景有哪些?
  • 如何使用Redis完成訂單列表場景?
  • Redis同時打開AOP與RDB持久化操作后,請描述Redis在恢復(fù)數(shù)據(jù)時加載的順序?
接下來我們來一一解決這些問題

一、redis為什么那么快痕钢?

從redis的存儲機(jī)制:
  • 內(nèi)存數(shù)據(jù)庫图柏,基于key-value的nosql數(shù)據(jù)庫,內(nèi)存操作反應(yīng)迅速
  • 高效的數(shù)據(jù)類型: 五種值類型對應(yīng)著七種數(shù)據(jù)結(jié)構(gòu)任连,更加細(xì)粒度的內(nèi)存選型使得內(nèi)存利用率更高蚤吹,因勢利導(dǎo),充分發(fā)揮內(nèi)存操作的效率
從redis的運行機(jī)制:

redis為什么選擇單線程随抠?官方解釋是因為cpu不是redis的性能瓶頸裁着,而內(nèi)存和網(wǎng)絡(luò)帶寬才是。所以順理成章就應(yīng)該設(shè)計成單線程的拱她,但是事實上我覺得原因很簡單二驰,因為單線程確實也快,那么單線程更簡單為什么不用呢秉沼?另外桶雀,這個快是沒法定義的,所以大可能以后還會在因為某些場景的原因引入多線程
貼士:使用ps -T -p PID可以查看進(jìn)程底下的線程氧猬,在4.0版本以后引入了多線程機(jī)制

  • redis是單線程的數(shù)據(jù)庫背犯,數(shù)據(jù)庫訪問對應(yīng)io管理和io處理在一個線程中串行完成,避免了線程或者進(jìn)程切換的開銷盅抚,以及數(shù)據(jù)同步帶來的編程復(fù)雜性和效率損失漠魏;
  • 單線程實現(xiàn)的機(jī)制是基于最高效的epoll(不同環(huán)境做編譯時適配)多路復(fù)用機(jī)制,該機(jī)制本身效率級高妄均;
  • redis的底層模型不太一樣(主要是通信機(jī)制)
  • 當(dāng)然redis在面對高并發(fā)場景下柱锹,也提供了分布式集群(基于主從復(fù)制),哨兵等高可用模型

注意:因為是單一線程丰包,所以同一時刻只有一個操作在進(jìn)行禁熏,所以,耗時的命令會導(dǎo)致并發(fā)的下降邑彪,不只是讀并發(fā)瞧毙,寫并發(fā)也會下降。而單一線程也只能用到一個CPU核心,所以可以在同一個多核的服務(wù)器中宙彪,可以啟動多個實例矩动,組成master-master或者master-slave的形式,耗時的讀命令可以完全在slave進(jìn)行释漆。

2. redis被用于哪些場景

image.png

補(bǔ)充:redis是一種nosql數(shù)據(jù)庫適合可擴(kuò)展性強(qiáng)的數(shù)據(jù)存儲悲没,對較大數(shù)據(jù)處理比較快,分布式方面的應(yīng)用也比較突出男图;但是對于結(jié)構(gòu)化查詢不太適合示姿,雖然支持事務(wù)操作,但是單線程執(zhí)行效率比較低逊笆。

3. 一對多的關(guān)系表栈戳,使用redis設(shè)計的時候會用到哪些數(shù)據(jù)結(jié)構(gòu)類型

注意:我們在進(jìn)行數(shù)據(jù)庫轉(zhuǎn)儲的時候,更多的是關(guān)注value值本身览露,也就對于關(guān)系型數(shù)據(jù)庫我們可能會優(yōu)先考慮將單個元組的數(shù)據(jù)作為value值(key可以自定義荧琼,也可以使用主鍵),這個時候使用hashmap的效率相對比較高差牛,但是如果僅僅存儲某一列的值命锄,我們又會優(yōu)先使用set,zset偏化,list等數(shù)據(jù)類型作為值脐恩。

下圖是一個使用hash作為值保存數(shù)據(jù)庫關(guān)系表的方式


image.png

redis的ZSet,list集合應(yīng)用場景有哪些

前者按照分值順序有序排列適合作為排行榜等侦讨,后者按照插入時間順序排列適合當(dāng)做有序隊列

注意:ZSet的底層數(shù)據(jù)結(jié)構(gòu)會根據(jù)數(shù)據(jù)量的大小進(jìn)行轉(zhuǎn)儲驶冒,數(shù)據(jù)量大的時候采用跳表

redis的兩種持久化方式

image.png
AOF持久化
image.png
references:

https://juejin.im/entry/5b7cfe976fb9a01a13366d95

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市韵卤,隨后出現(xiàn)的幾起案子骗污,更是在濱河造成了極大的恐慌,老刑警劉巖沈条,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件需忿,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜡歹,警方通過查閱死者的電腦和手機(jī)屋厘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來月而,“玉大人汗洒,你說我怎么就攤上這事「缚睿” “怎么了溢谤?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵瞻凤,是天一觀的道長。 經(jīng)常有香客問我溯香,道長鲫构,這世上最難降的妖魔是什么浓恶? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任玫坛,我火速辦了婚禮,結(jié)果婚禮上包晰,老公的妹妹穿的比我還像新娘湿镀。我一直安慰自己,他們只是感情好伐憾,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布勉痴。 她就那樣靜靜地躺著,像睡著了一般树肃。 火紅的嫁衣襯著肌膚如雪蒸矛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天胸嘴,我揣著相機(jī)與錄音雏掠,去河邊找鬼。 笑死劣像,一個胖子當(dāng)著我的面吹牛乡话,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耳奕,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼绑青,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屋群?” 一聲冷哼從身側(cè)響起闸婴,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芍躏,沒想到半個月后邪乍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡纸肉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年溺欧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柏肪。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡姐刁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烦味,到底是詐尸還是另有隱情聂使,我是刑警寧澤壁拉,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站柏靶,受9級特大地震影響弃理,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屎蜓,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一痘昌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炬转,春花似錦辆苔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荐吵,卻和暖如春骑冗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背先煎。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工贼涩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榨婆。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓磁携,卻偏偏與公主長得像,于是被迫代替她去往敵國和親良风。 傳聞我的和親對象是個殘疾皇子谊迄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

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

  • 初識 Redis 《 Redis 開發(fā)與運維》的學(xué)習(xí)筆記,希望大家多多指導(dǎo)烟央。 什么是 Redis Redis 的全...
    izerone閱讀 367評論 1 2
  • 1.Redis簡介 Redis本質(zhì)上是一種鍵值數(shù)據(jù)庫统诺,但它在保持鍵值數(shù)據(jù)庫簡單快捷特點的同時,又吸收了部分關(guān)系數(shù)據(jù)...
    擦普洱閱讀 404評論 0 2
  • 一疑俭、盛贊Redis 高性能 key-value服務(wù)器(官方號稱QPS能達(dá)到10w級別)支持多種數(shù)據(jù)結(jié)構(gòu)(strin...
    不二不二熊閱讀 195評論 0 0
  • https://coding.imooc.com/learn/list/151.html Redis是什么 1.開...
    文刀雨閱讀 323評論 0 0
  • Redis特性 速度快 數(shù)據(jù)存儲在(內(nèi)存)中 (主要原因) C語言編寫(50000行) 單線程模型...
    fxqp1043閱讀 175評論 0 0