Redis介紹和使用場(chǎng)景詳解
本篇文章主要介紹了Redis介紹和使用場(chǎng)景,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
(1)持久化數(shù)據(jù)庫(kù)的缺點(diǎn)
平常我們使用的關(guān)系型數(shù)據(jù)庫(kù)有Mysql、Oracle以及SqlServer等,在開(kāi)發(fā)的過(guò)程中,數(shù)據(jù)通常都是通過(guò)Web提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)來(lái)鏈接數(shù)據(jù)庫(kù)進(jìn)行增刪改查。
那么,我們?nèi)粘J褂玫臄?shù)據(jù)庫(kù)的數(shù)據(jù)都儲(chǔ)存在哪里呢?我們以Mysql為例。
打開(kāi)我們Mysql所在的文件夾目錄下的data文件夾,如下所示:

我們可以發(fā)現(xiàn),里面都是我們創(chuàng)建的數(shù)據(jù)庫(kù),打開(kāi)其中一個(gè),可以看到我們創(chuàng)建的表,他們以文件(格式frm和ibd)的形式存在:

也就是說(shuō),我們?nèi)粘J褂玫年P(guān)系型數(shù)據(jù)中的數(shù)據(jù),全部存儲(chǔ)在我們部署數(shù)據(jù)庫(kù)的機(jī)器的硬盤(pán)中。
一般我們的網(wǎng)站開(kāi)發(fā)完成,上線之后,服務(wù)器的讀寫(xiě)效率是網(wǎng)站運(yùn)行速度的重要條件,當(dāng)然還有服務(wù)器的帶寬等,但是這些東西都可以通過(guò)硬件的更新升級(jí)來(lái)解決。其實(shí)與網(wǎng)站運(yùn)行效率息息相關(guān)的東西,就是我們的------數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)處理數(shù)據(jù)的速度,與網(wǎng)站速度息息相關(guān),而數(shù)據(jù)查詢、數(shù)據(jù)處理等等,都和數(shù)據(jù)庫(kù)處理速度有關(guān)。提高數(shù)據(jù)庫(kù)的處理數(shù)據(jù)的能力,其中一個(gè)方案就是sql語(yǔ)句的優(yōu)化技術(shù),sql語(yǔ)句寫(xiě)的處理效率比較高,數(shù)據(jù)庫(kù)處理能力就會(huì)上去,而網(wǎng)站的數(shù)據(jù)處理能力也會(huì)快些。
但是,當(dāng)網(wǎng)站的處理和訪問(wèn)量非常大的時(shí)候,我們的數(shù)據(jù)庫(kù)的壓力就變大了,數(shù)據(jù)庫(kù)的連接池,數(shù)據(jù)庫(kù)同時(shí)處理數(shù)據(jù)的能力就會(huì)受到很大的挑戰(zhàn),一旦數(shù)據(jù)庫(kù)承受了其最大承受能力,網(wǎng)站的數(shù)據(jù)處理效率就會(huì)大打折扣。此時(shí)就要使用高并發(fā)處理、負(fù)載均衡和分布式數(shù)據(jù)庫(kù),而這些技術(shù)既花費(fèi)人力,又花費(fèi)資金。
如果我們的網(wǎng)站不是非常大的網(wǎng)站,而有想要提高網(wǎng)站的效率,降低數(shù)據(jù)庫(kù)的讀寫(xiě)次數(shù),我們就需要引入緩存技術(shù)。
(2)緩存
緩存就是在內(nèi)存中存儲(chǔ)的數(shù)據(jù)備份,當(dāng)數(shù)據(jù)沒(méi)有發(fā)生本質(zhì)改變的時(shí)候,我們就不讓數(shù)據(jù)的查詢?nèi)?shù)據(jù)庫(kù)進(jìn)行操作,而去內(nèi)存中取數(shù)據(jù),這樣就大大降低了數(shù)據(jù)庫(kù)的讀寫(xiě)次數(shù),而且從內(nèi)存中讀數(shù)據(jù)的速度比去數(shù)據(jù)庫(kù)查詢要快一些,這樣同時(shí)又提高了效率。
使用緩存減輕數(shù)據(jù)庫(kù)的負(fù)載:
在開(kāi)發(fā)網(wǎng)站的時(shí)候如果有一些數(shù)據(jù)在短時(shí)間之內(nèi)不會(huì)發(fā)生變化,而它們還要被頻繁訪問(wèn),為了提高用戶的請(qǐng)求速度和降低網(wǎng)站的負(fù)載,就把這些數(shù)據(jù)放到一個(gè)讀取速度更快的介質(zhì)上(或者是通過(guò)較少的計(jì)算量就可以獲得該數(shù)據(jù)),該行為就稱作對(duì)該數(shù)據(jù)的緩存。該介質(zhì)可以是文件/數(shù)據(jù)庫(kù)/內(nèi)存。內(nèi)存經(jīng)常用于數(shù)據(jù)庫(kù)緩存。
緩存的兩種形式:
頁(yè)面緩存經(jīng)常用在CMS(content manage system)內(nèi)存管理系統(tǒng)里面。
數(shù)據(jù)緩存經(jīng)常會(huì)用在頁(yè)面的具體數(shù)據(jù)里面。
緩存分為兩種:
頁(yè)面緩存(smarty靜態(tài)化技術(shù))

數(shù)據(jù)緩存

(3)Redis介紹
我們要學(xué)習(xí)的一個(gè)緩存技術(shù)就是----Redis:
Redis是Remote Dictionary Server(遠(yuǎn)程數(shù)據(jù)服務(wù))的縮寫(xiě),由意大利人antirez(Salvatore Sanfilippo)開(kāi)發(fā)的一款內(nèi)存高速緩存數(shù)據(jù)庫(kù),該軟件使用C語(yǔ)言編寫(xiě),它的數(shù)據(jù)模型為key-value。它支持豐富的數(shù)據(jù)結(jié)構(gòu)(類型),比如String/List/Hash/Set/Sorted Set。
可持久化(一邊運(yùn)行,一邊把數(shù)據(jù)往硬盤(pán)中備份一份,防止斷電等情況導(dǎo)致數(shù)據(jù)丟失,等斷電情況恢復(fù)之后,Redis再把硬盤(pán)中的數(shù)據(jù)恢復(fù)到內(nèi)存中),保證了數(shù)據(jù)的安全。
4)redis和memcache比較
1.Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
2.Redis支持master-slave(主-從)模式應(yīng)用。
3.Redis支持?jǐn)?shù)據(jù)持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用
4.Redis單個(gè)value的最大限制是1GB,memcached只能保存1MB的數(shù)據(jù)。
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
使用Mybatis的Batch?Insert?Support?實(shí)現(xiàn)批量插入
這篇文章主要介紹了使用Mybatis的Batch?Insert?Support?實(shí)現(xiàn)批量插入。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
SpringCloud-Hystrix實(shí)現(xiàn)原理總結(jié)
通過(guò)hystrix可以解決雪崩效應(yīng)問(wèn)題,它提供了資源隔離、降級(jí)機(jī)制、融斷、緩存等功能。接下來(lái)通過(guò)本文給大家分享SpringCloud-Hystrix實(shí)現(xiàn)原理,感興趣的朋友一起看看吧2021-05-05
Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問(wèn)題
這篇文章主要介紹了Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
手把手教你用Java實(shí)現(xiàn)一套簡(jiǎn)單的鑒權(quán)服務(wù)
現(xiàn)今大部分系統(tǒng)都會(huì)有自己的鑒權(quán)服務(wù),本文介紹了最常用的鑒權(quán)服務(wù),就是日常用戶的登錄登出,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
解決@Autowired報(bào)錯(cuò)Could not autowire. No bea
介紹了在IDEA中使用@Autowired報(bào)錯(cuò)Couldnot autowire. No beans of 'XXX' type found的解決方法,原因是@Autowired在注入service時(shí),由于service接口沒(méi)有實(shí)現(xiàn)類,而mybatis僅需提供Dao接口,導(dǎo)致@Autowired無(wú)法識(shí)別2024-12-12
Java?從json提取數(shù)組并轉(zhuǎn)換為list的操作方法
這篇文章主要介紹了Java?從json提取出數(shù)組并轉(zhuǎn)換為list,使用getJSONArray()獲取到j(luò)sonarray后,再將jsonArray轉(zhuǎn)換為字符串,最后將字符串解析為L(zhǎng)ist列表,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
Spring Boot配置application.yml及根據(jù)application.yml選擇啟動(dòng)配置的操作
Spring Boot中可以選擇applicant.properties 作為配置文件,也可以通過(guò)在application.yml中進(jìn)行配置,讓Spring Boot根據(jù)你的選擇進(jìn)行加載啟動(dòng)配置文件,本文給大家介紹Spring Boot配置application.yml及根據(jù)application.yml選擇啟動(dòng)配置的操作方法,感興趣的朋友一起看看吧2023-10-10

