溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

web項(xiàng)目要引入redis的原因

發(fā)布時(shí)間:2020-10-28 15:13:03 來(lái)源:億速云 閱讀:167 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫(kù)

web項(xiàng)目要引入redis的原因?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

redis是Nosql數(shù)據(jù)庫(kù),是一個(gè)key-value存儲(chǔ)系統(tǒng)。雖然redis是key-value的存儲(chǔ)系統(tǒng),但是redis支持的value存儲(chǔ)類型是非常的多,比如字符串、鏈表、集合、有序集合和哈希。

redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤或者把修改操作寫(xiě)入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。

Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。

Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。這使得Redis可執(zhí)行單層樹(shù)復(fù)制。存盤可以有意無(wú)意的對(duì)數(shù)據(jù)進(jìn)行寫(xiě)操作。由于完全實(shí)現(xiàn)了發(fā)布/訂閱機(jī)制,使得從數(shù)據(jù)庫(kù)在任何地方同步樹(shù)時(shí),可訂閱一個(gè)頻道并接收主服務(wù)器完整的消息發(fā)布記錄。同步對(duì)讀取操作的可擴(kuò)展性和數(shù)據(jù)冗余很有幫助。

Redis是完全開(kāi)源免費(fèi)的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。

Redis支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

Redis與其他 key-value緩存產(chǎn)品有以下三個(gè)特點(diǎn):

Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。

Redis不僅僅支持簡(jiǎn)單的key-value類型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。

Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。

Redis優(yōu)勢(shì)

性能極高 – Redis能讀的速度是110000次/s,寫(xiě)的速度是81000次/s 。

豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作。

原子– Redis的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個(gè)操作是原子性的。多個(gè)操作也支持事務(wù),即原子性,通過(guò)MULTI和EXEC指令包起來(lái)。

豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過(guò)期等等特性。

Redis與其他key-value存儲(chǔ)有什么不同?

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對(duì)他們的原子性操作,這是一個(gè)不同于其他數(shù)據(jù)庫(kù)的進(jìn)化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)對(duì)程序員透明,無(wú)需進(jìn)行額外的抽象。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫(xiě)時(shí)需要權(quán)衡內(nèi)存,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫(kù)方面的另一個(gè)優(yōu)點(diǎn)是,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來(lái)非常簡(jiǎn)單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。同時(shí),在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問(wèn)。

那么為什么要使用類似redis這樣的Nosql數(shù)據(jù)庫(kù)呢?

1、當(dāng)數(shù)據(jù)量的總大小一個(gè)機(jī)器放不下時(shí);

2、數(shù)據(jù)索引一個(gè)機(jī)器的內(nèi)存放不下時(shí);

3、訪問(wèn)量(讀寫(xiě)混合)一個(gè)實(shí)例放不下時(shí)。

單機(jī)時(shí)代,存儲(chǔ)只用一臺(tái)機(jī)器裝mysql,如果每次存儲(chǔ)成千上萬(wàn)條數(shù)據(jù),這樣很會(huì)導(dǎo)致mysql的性能很差,存儲(chǔ)以及讀取速度很慢,然后就演變成緩存+mysql+垂直拆分的方式。

Cache作為中間緩存時(shí)代,將所有的數(shù)據(jù)先保存到緩存中,然后再存入mysql中,減小數(shù)據(jù)庫(kù)壓力,提高效率。

但是當(dāng)數(shù)據(jù)再次增加到又一個(gè)量級(jí),上面的方式也不能滿足需求,由于數(shù)據(jù)庫(kù)的寫(xiě)入壓力增加,緩存只能緩解數(shù)據(jù)庫(kù)的讀取壓力。讀寫(xiě)集中在一個(gè)數(shù)據(jù)庫(kù)上讓數(shù)據(jù)庫(kù)不堪重負(fù),大部分網(wǎng)站開(kāi)始使用主從復(fù)制技術(shù)來(lái)達(dá)到讀寫(xiě)分離,以提高讀寫(xiě)性能和讀庫(kù)的可擴(kuò)展性。Mysql的master-slave模式成為這個(gè)時(shí)候的網(wǎng)站標(biāo)配了。

主從分離模式時(shí)代,在redis的高速緩存,MySQL的主從復(fù)制,讀寫(xiě)分離的基礎(chǔ)之上,這時(shí)MySQL主庫(kù)的寫(xiě)壓力開(kāi)始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會(huì)出現(xiàn)嚴(yán)重的鎖問(wèn)題,大量的高并發(fā)MySQL應(yīng)用開(kāi)始使用InnoDB引擎代替MyISAM。Nosql數(shù)據(jù)庫(kù)的優(yōu)勢(shì):

1、易擴(kuò)展

這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余的操作就可以進(jìn)行橫向的擴(kuò)展。相對(duì)于關(guān)系型數(shù)據(jù)庫(kù)可以減少表和字段特別多的情況。也無(wú)型之間在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力

2、大數(shù)據(jù)量提高性能

3、多樣靈活的數(shù)據(jù)模型

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)web項(xiàng)目要引入redis的原因大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI