基于Redis技術(shù)的頁面緩存研究_第1頁
基于Redis技術(shù)的頁面緩存研究_第2頁
基于Redis技術(shù)的頁面緩存研究_第3頁
基于Redis技術(shù)的頁面緩存研究_第4頁
基于Redis技術(shù)的頁面緩存研究_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、    基于redis技術(shù)的頁面緩存研究    秦溧艾青摘要:隨著互聯(lián)網(wǎng)業(yè)務(wù)的逐漸擴(kuò)大,用戶對(duì)相同數(shù)據(jù)訪問的相對(duì)集中,從而出現(xiàn)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)負(fù)擔(dān)加重,數(shù)據(jù)庫響應(yīng)效率低下,瀏覽器上響應(yīng)延遲等重大問題?;诖?,提出采用redis高性能分布式內(nèi)存緩存服務(wù)器的這一技術(shù),來解決因數(shù)據(jù)量過大導(dǎo)致頁面響應(yīng)延遲的問題。通過實(shí)驗(yàn)以及和傳統(tǒng)關(guān)系型數(shù)據(jù)庫對(duì)比的結(jié)果表明,利用緩存技術(shù)查找數(shù)據(jù),可以在一定程度上減少對(duì)數(shù)據(jù)庫的訪問,同時(shí)加快web等應(yīng)用的響應(yīng)速度,提高用戶體驗(yàn)感。關(guān)鍵詞:redis;sql;緩存;數(shù)據(jù)庫:tp311.5:a目前我們所設(shè)計(jì)的系統(tǒng)采用的是關(guān)系型數(shù)據(jù)

2、庫,將數(shù)據(jù)存儲(chǔ)到該系統(tǒng)中,再通過服務(wù)器從中獲取數(shù)據(jù),并在瀏覽器上顯示出來。但隨著數(shù)據(jù)量逐漸增大,用戶度對(duì)相同數(shù)據(jù)訪問的集中,就會(huì)出現(xiàn)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)負(fù)擔(dān)加重,數(shù)據(jù)庫響應(yīng)效率低下,瀏覽器上響應(yīng)延遲等重大問題。特別是當(dāng)我們?cè)陂_發(fā)web應(yīng)用時(shí),前端界面成為了不可獲取的一部分,但是每次用戶對(duì)我們的網(wǎng)頁進(jìn)行訪問時(shí),都要重新加載一次靜態(tài)資源,從而加重服務(wù)器的負(fù)擔(dān),造成網(wǎng)上顯示延遲等問題,在很大程度上影響了用戶體驗(yàn)感?;谝陨蠁栴},本文結(jié)合redis高性能分布式內(nèi)存緩存服務(wù)器技術(shù),對(duì)頁面進(jìn)行分布式管理。并通過實(shí)驗(yàn)和對(duì)比證實(shí)了利用緩存技術(shù)查找數(shù)據(jù),可以在一定程度上減少對(duì)數(shù)據(jù)庫的訪問,同時(shí)加快web等應(yīng)用的

3、響應(yīng)速度,提高用戶體驗(yàn)感。1 redis概述1.1 redis的特性redis是一個(gè)基于鍵值對(duì)的存儲(chǔ)結(jié)構(gòu)的系統(tǒng),也是類屬于nosql的一種,它可以利用多種不同的鍵值對(duì)數(shù)據(jù)類型來滿足于不同的存儲(chǔ)需求,redis優(yōu)勢主要包括:(1)性能高。由于redis是nosql數(shù)據(jù)庫,redis的所有操作都是直接操作于內(nèi)存之中,它的運(yùn)行速度相比較于mysql這一類傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,就好比是在內(nèi)存中進(jìn)行讀寫和在硬盤中進(jìn)行讀寫的差距;(2)可使用的數(shù)據(jù)類型非常豐富,redis能夠支持二進(jìn)制的hash,set,string,list等數(shù)據(jù)類型的操作;(3)支持事務(wù),操作都是原子性,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么

4、全部執(zhí)行,要么全部不執(zhí)行;(4)豐富的特性,redis還支持publish/subscribe,通知,key過期等等特性。基于上述優(yōu)勢,redis技術(shù)最大的應(yīng)用場景就是用來做緩存。緩存技術(shù)可以大大減輕服務(wù)器的壓力,減少數(shù)據(jù)丟失,提高系統(tǒng)中數(shù)據(jù)的一致性和完整性。1redis對(duì)于不同的常見數(shù)據(jù)類型來說,指令既有相同的,也有針對(duì)不同數(shù)據(jù)類型的特殊指令。同時(shí)redis具有java版本客戶端jedis,jedis擁有java的主要特性之一多線程處理,通過線程來優(yōu)化系統(tǒng)資源,通過線程操作redis的數(shù)據(jù),并根據(jù)實(shí)際情況對(duì)線程進(jìn)行回收,極大的提高的redis的使用效率。在提高數(shù)據(jù)獲取速度時(shí),我們需要用一些緩

5、存技術(shù),redis的最大優(yōu)勢在于可將數(shù)據(jù)緩存到內(nèi)存并能夠分片存儲(chǔ),同時(shí)擁有很高的讀寫效率。2在這個(gè)基礎(chǔ)之上,redis還可以使用各種不同方式的排序,以此來滿足各種不同業(yè)務(wù)的需求,為了不影響查詢數(shù)據(jù)的速度,數(shù)據(jù)一般都是先在內(nèi)存中緩存下來,區(qū)別就是redis會(huì)在經(jīng)過一段周期后的將更新后的數(shù)據(jù)重新在磁盤中進(jìn)行寫入和覆蓋,又或者會(huì)把進(jìn)行修改的操作寫入記錄文件中,再將此文件追加到之前的記錄文件中。前者為默認(rèn)的rdb存儲(chǔ)模式,所謂rdb,就是將數(shù)據(jù)寫入到一個(gè)臨時(shí)的文件。等到持久化結(jié)束之后,用這個(gè)臨時(shí)文件,替換掉上次舊的持久化的文件,從而達(dá)到恢復(fù)數(shù)據(jù)的目的。優(yōu)點(diǎn),是只需要通過使用單獨(dú)子進(jìn)程來進(jìn)行持久化操作,

6、并不需要主進(jìn)程進(jìn)行任何的io操作,從而保證了redis的高效性;缺點(diǎn),rdb會(huì)間隔一段時(shí)間再進(jìn)行持久化操作,如果在持久化期間,redis發(fā)生了故障,會(huì)出現(xiàn)數(shù)據(jù)的丟失情況,所以這種方式更適合對(duì)數(shù)據(jù)要求不嚴(yán)謹(jǐn)?shù)臅r(shí)候。由于只需要對(duì)界面的數(shù)據(jù)進(jìn)行緩存,所以本文采用rdb存儲(chǔ)模式技術(shù)便可達(dá)到需求。1.2 redis存儲(chǔ)機(jī)制其存儲(chǔ)機(jī)制默認(rèn)設(shè)置為如果更改了一個(gè)key,則間隔900秒之后進(jìn)行一次持久化存儲(chǔ)。如果更改了十個(gè)key則300秒之后進(jìn)行一次持久化存儲(chǔ),如果更改一萬個(gè)key則自修改之時(shí)起,一分鐘之后進(jìn)行一次持久化存儲(chǔ),持久化完成后,將臨時(shí)文件替換掉舊的rdb。使用rdb恢復(fù)數(shù)據(jù)也非常簡單,實(shí)際上只需重啟

7、redis服務(wù)即可完成。啟動(dòng)的時(shí)候,redis的sever會(huì)從dump.rdb文件中先同步數(shù)據(jù),第二種方式是aof,是將執(zhí)行過的指令記錄下來,數(shù)據(jù)恢復(fù)時(shí),按照從前到后的順序再將指令執(zhí)行一遍從而實(shí)現(xiàn)數(shù)據(jù)的恢復(fù)。優(yōu)點(diǎn),可以保持更高的數(shù)據(jù)完整性。例如,如果設(shè)置追擊file的時(shí)間是一秒,那么一旦redis發(fā)生了故障,最多只會(huì)丟失那一秒的數(shù)據(jù)。且如果日志寫入不夠完整,支持通過redischeckaof來進(jìn)行日志修復(fù),aof文件沒備注right之前可以刪除其中的某些指令。缺點(diǎn),aof比rdb文件大,且恢復(fù)速度慢,因?yàn)樗且杂涗洸僮鲾?shù)據(jù)為主的。此外,通信業(yè)務(wù)的數(shù)據(jù)大部分都是數(shù)字信息,如手機(jī)號(hào)碼、imsi碼等

8、,采用az,az,09組成的62進(jìn)制替代10進(jìn)制可以大大的節(jié)約內(nèi)存,手機(jī)號(hào)碼可以從11位壓縮到6位,imsi碼可以從15位壓縮到9位。由此可以進(jìn)一步節(jié)約內(nèi)存。3redis的應(yīng)用目前已經(jīng)十分廣泛,國內(nèi)的淘寶,新浪,以及國外的github等都在使用redis的緩存服務(wù)。當(dāng)然,在使用redis緩存技術(shù)之前,必須搭建分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)。為了進(jìn)一步提高redis的分布式數(shù)據(jù)存儲(chǔ)的效率,必須同時(shí)要考慮到數(shù)據(jù)庫的負(fù)載情況,因此在開發(fā)時(shí)還需要額外搭建另一個(gè)分布式存儲(chǔ)系統(tǒng)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫采用中央處理器或者是內(nèi)存的使用來進(jìn)行代價(jià)的評(píng)估,但對(duì)于這種系統(tǒng)的存儲(chǔ)方式和數(shù)據(jù)類型往往不是很全面。在實(shí)際運(yùn)行的過程中,對(duì)多

9、類資源數(shù)據(jù)進(jìn)行實(shí)時(shí)的統(tǒng)計(jì),當(dāng)完成對(duì)執(zhí)行處理任務(wù)的線程后,完成對(duì)永不服務(wù)的主線程的響應(yīng),再以此為基礎(chǔ),確定各個(gè)影響數(shù)據(jù)存儲(chǔ)有效性的影響因素,實(shí)現(xiàn)對(duì)分布式數(shù)據(jù)的可靠性評(píng)測和存儲(chǔ)。42 采用redis進(jìn)行頁面緩存的設(shè)計(jì)方案,以及后臺(tái)配置文件的編寫2.1 redis解決頁面緩存問題的方案設(shè)計(jì)redis作為一個(gè)nosql數(shù)據(jù)庫,它的簡單易用是它最主要的特點(diǎn)。它的本質(zhì)其實(shí)是和布隆過濾器5類似,只是作為一個(gè)服務(wù)器和數(shù)據(jù)庫之間的一個(gè)緩沖區(qū),當(dāng)用戶要訪問數(shù)據(jù)庫時(shí),先訪問redis,如果redis中有所需要的數(shù)據(jù),便直接取出,返回到服務(wù)器;如果沒有,便去訪問數(shù)據(jù)庫,將數(shù)據(jù)庫中的數(shù)據(jù)返回給服務(wù)器,同時(shí)將數(shù)據(jù)保存一份

10、到redis中,便于下次的取和用。根據(jù)此特性,我可以解決頁面緩存的問題。實(shí)際上,我們的前端界面的靜態(tài)資源,對(duì)用戶體驗(yàn)感影響最大的,便是我們界面上的圖片信息,因?yàn)檫@是用戶最容易注意到的,也是經(jīng)常在改變的,所以我們需要將界面上的圖片信息,緩存到我們的redis數(shù)據(jù)庫中。由于redis存儲(chǔ)機(jī)制是以鍵值對(duì)的形式進(jìn)行存儲(chǔ)的,因此,我們只需要通過后端來實(shí)現(xiàn),將圖片的索引作為鍵,將圖片的路徑等信息以json的形式作為值緩存到redis中,從而達(dá)到無需訪問數(shù)據(jù)庫,便可加載圖片的目的。當(dāng)然,如果我們后期需要對(duì)圖片進(jìn)行更新,用戶也只需要重新加載一次頁面便可更新redis中的緩存信息。2.2 redis緩存技術(shù)設(shè)計(jì)

11、流圖該圖用于展示服務(wù)器在進(jìn)行數(shù)據(jù)存取時(shí)和redis以及數(shù)據(jù)庫之間的交互流程,如圖1所示,當(dāng)服務(wù)器要獲取相應(yīng)的數(shù)據(jù)時(shí),先從redis中獲取,如果命中,則直接返回給服務(wù)器;如果未命中,則再從數(shù)據(jù)庫中獲取,獲取到數(shù)據(jù)后,返回給服務(wù)器,并更新redis中的內(nèi)容。2.3 redis配置文件信息配置使用redis所需要的相關(guān)信息,如圖2所示:(1)spring.redis.database:數(shù)據(jù)庫索引,在使用redis時(shí),由于redis有16個(gè)內(nèi)置庫,需要標(biāo)明使用哪個(gè)數(shù)據(jù)庫,默認(rèn)是用的是下標(biāo)為0的庫,這里設(shè)置的是索引為1的庫;(2)spring.redis.host:redis服務(wù)器地址,由于redis是

12、分布式的緩存數(shù)據(jù)庫,所以需要單獨(dú)部署到一臺(tái)計(jì)算機(jī)上,這里部署到的是linux虛擬機(jī)上,虛擬機(jī)的ip地址是:192.168.220.128,所以redis的服務(wù)器地址是:192.168.220.128;(3)spring.redis.port:redis服務(wù)器連接端口,redis的配置文件中,端口號(hào)默認(rèn)配置為6379;(4)spring.redis.password:redis服務(wù)器連接密碼,其實(shí)redis默認(rèn)連接是沒有密碼的,這里為了保險(xiǎn)起見在redis的配置文件中設(shè)置連接redis的密碼為:imooc;(5)spring.redis.pool.maxactive:連接池最大連接數(shù),這里可以設(shè)

13、置同時(shí)訪問redis的連接數(shù)量,如果設(shè)置為負(fù)值則表示沒有連接的限制;(6)spring.redis.pool.maxwait:連接池最大阻塞等待時(shí)間,是指建立連接的最大等待時(shí)間,毫秒為單位,如果是負(fù)值,則表示永遠(yuǎn)等待;(7)spring.redis.pool.maxidle:連接池最大空閑連接,如果超過最大空閑連接數(shù),會(huì)將對(duì)象丟棄;(8)spring.redis.pool.minidle:連接池最小空閑連接,如果小于最小空閑連接數(shù),會(huì)創(chuàng)建新的連接對(duì)象,以此來保持空閑連接數(shù)量大于等于最小空閑連接數(shù);(9)spring.redis.timeout:連接超時(shí)時(shí)間。3 實(shí)驗(yàn)結(jié)果及分析本文通過采用red

14、isdesktopmanager圖形化redis管理工具來對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析和研究。如圖3所示,在db0這個(gè)數(shù)據(jù)庫中,有8個(gè)數(shù)據(jù)鍵,這8個(gè)數(shù)據(jù)鍵分別對(duì)應(yīng)8種不同類別的圖片資源信息,如表1所列:這樣,在獲取value1所對(duì)應(yīng)的值時(shí),只需要在后端通過鍵shopcategorylist_allfirstlevel,便可直接在redis中獲取到值,而無需再次通過數(shù)據(jù)庫進(jìn)行查詢操作,極大程度上改善了系統(tǒng)的效率。將不使用redis的傳統(tǒng)關(guān)系型數(shù)據(jù)庫和采用redis的數(shù)據(jù)庫進(jìn)行對(duì)比,會(huì)發(fā)現(xiàn)采用redis有以下好處,如表2所列:4 結(jié)語基于redis技術(shù)的分布式數(shù)據(jù)存儲(chǔ)方法,可以解決因數(shù)據(jù)量逐漸增大,用戶對(duì)相同數(shù)據(jù)訪問的集中,而出現(xiàn)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)負(fù)擔(dān)加重,數(shù)據(jù)庫響應(yīng)效率低下,瀏覽器上響應(yīng)延遲等重大問題。本文通過實(shí)驗(yàn)以及對(duì)比證實(shí)了可以利用緩存技術(shù)查找數(shù)據(jù),可以在一定程度上減少對(duì)數(shù)據(jù)庫的訪問,同時(shí)加快web等應(yīng)用的響應(yīng)速度,提高用戶體驗(yàn)感。參考文獻(xiàn):1寧方美,賀雪梅,牟晉娟.springboot集成redis緩存技術(shù)在企業(yè)一卡通系統(tǒng)中的應(yīng)用j.電子技術(shù)與軟件工程,2019(24):133134.2葉朋.網(wǎng)站訪問性能優(yōu)化的研究與實(shí)現(xiàn)d.哈爾濱理工大學(xué),2020.3徐茂紅,王飛,張明

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論