首先我們先介紹些redis的基本概念柏蘑,redis是Nosql數(shù)據(jù)庫,是一個key-value存儲系統(tǒng)点额。雖然redis是key-value的存儲系統(tǒng)咪啡,但是redis支持的value存儲類型是非常的多,比如字符串房铭、鏈表驻龟、集合、有序集合和哈希育叁。
那么為什么要使用類似redis這樣的Nosql數(shù)據(jù)庫呢迅脐?
1) 當(dāng)數(shù)據(jù)量的總大小一個機(jī)器放不下時;
2) 數(shù)據(jù)索引一個機(jī)器的內(nèi)存放不下時豪嗽;
3) 訪問量(讀寫混合)一個實(shí)例放不下時谴蔑。
單機(jī)時代,存儲只用一臺機(jī)器裝mysql龟梦,如果每次存儲成千上萬條數(shù)據(jù)隐锭,這樣很會導(dǎo)致mysql的性能很差,存儲以及讀取速度很慢计贰,然后就演變成緩存+mysql+垂直拆分的方式钦睡。
Cache作為中間緩存時代,將所有的數(shù)據(jù)先保存到緩存中躁倒,然后再存入mysql中荞怒,減小數(shù)據(jù)庫壓力,提高效率秧秉。
但是當(dāng)數(shù)據(jù)再次增加到又一個量級褐桌,上面的方式也不能滿足需求,由于數(shù)據(jù)庫的寫入壓力增加象迎,緩存只能緩解數(shù)據(jù)庫的讀取壓力荧嵌。讀寫集中在一個數(shù)據(jù)庫上讓數(shù)據(jù)庫不堪重負(fù),大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達(dá)到讀寫分離砾淌,以提高讀寫性能和讀庫的可擴(kuò)展性啦撮。Mysql的master-slave模式成為這個時候的網(wǎng)站標(biāo)配了。
主從分離模式時代汪厨,在redis的高速緩存赃春,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上骄崩,這時MySQL主庫的寫壓力開始出現(xiàn)瓶頸聘鳞,而數(shù)據(jù)量的持續(xù)猛增薄辅,由于MyISAM使用表鎖,在高并發(fā)下會出現(xiàn)嚴(yán)重的鎖問題抠璃,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM站楚。
Nosql數(shù)據(jù)庫的優(yōu)勢
1)易擴(kuò)展
這些類型的數(shù)據(jù)存儲不需要固定的模式,無需多余的操作就可以進(jìn)行橫向的擴(kuò)展搏嗡。相對于關(guān)系型數(shù)據(jù)庫可以減少表和字段特別多的情況窿春。也無型之間在架構(gòu)的層面上帶來了可擴(kuò)展的能力
2)大數(shù)據(jù)量提高性能
3)多樣靈活的數(shù)據(jù)模型