Redis介紹和使用場景詳解
本篇文章主要介紹了Redis介紹和使用場景,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
(1)持久化數(shù)據(jù)庫的缺點(diǎn)
平常我們使用的關(guān)系型數(shù)據(jù)庫有Mysql、Oracle以及SqlServer等,在開發(fā)的過程中,數(shù)據(jù)通常都是通過Web提供的數(shù)據(jù)庫驅(qū)動來鏈接數(shù)據(jù)庫進(jìn)行增刪改查。
那么,我們?nèi)粘J褂玫臄?shù)據(jù)庫的數(shù)據(jù)都儲存在哪里呢?我們以Mysql為例。
打開我們Mysql所在的文件夾目錄下的data文件夾,如下所示:
我們可以發(fā)現(xiàn),里面都是我們創(chuàng)建的數(shù)據(jù)庫,打開其中一個,可以看到我們創(chuàng)建的表,他們以文件(格式frm和ibd)的形式存在:
也就是說,我們?nèi)粘J褂玫年P(guān)系型數(shù)據(jù)中的數(shù)據(jù),全部存儲在我們部署數(shù)據(jù)庫的機(jī)器的硬盤中。
一般我們的網(wǎng)站開發(fā)完成,上線之后,服務(wù)器的讀寫效率是網(wǎng)站運(yùn)行速度的重要條件,當(dāng)然還有服務(wù)器的帶寬等,但是這些東西都可以通過硬件的更新升級來解決。其實(shí)與網(wǎng)站運(yùn)行效率息息相關(guān)的東西,就是我們的------數(shù)據(jù)庫。
數(shù)據(jù)庫處理數(shù)據(jù)的速度,與網(wǎng)站速度息息相關(guān),而數(shù)據(jù)查詢、數(shù)據(jù)處理等等,都和數(shù)據(jù)庫處理速度有關(guān)。提高數(shù)據(jù)庫的處理數(shù)據(jù)的能力,其中一個方案就是sql語句的優(yōu)化技術(shù),sql語句寫的處理效率比較高,數(shù)據(jù)庫處理能力就會上去,而網(wǎng)站的數(shù)據(jù)處理能力也會快些。
但是,當(dāng)網(wǎng)站的處理和訪問量非常大的時候,我們的數(shù)據(jù)庫的壓力就變大了,數(shù)據(jù)庫的連接池,數(shù)據(jù)庫同時處理數(shù)據(jù)的能力就會受到很大的挑戰(zhàn),一旦數(shù)據(jù)庫承受了其最大承受能力,網(wǎng)站的數(shù)據(jù)處理效率就會大打折扣。此時就要使用高并發(fā)處理、負(fù)載均衡和分布式數(shù)據(jù)庫,而這些技術(shù)既花費(fèi)人力,又花費(fèi)資金。
如果我們的網(wǎng)站不是非常大的網(wǎng)站,而有想要提高網(wǎng)站的效率,降低數(shù)據(jù)庫的讀寫次數(shù),我們就需要引入緩存技術(shù)。
(2)緩存
緩存就是在內(nèi)存中存儲的數(shù)據(jù)備份,當(dāng)數(shù)據(jù)沒有發(fā)生本質(zhì)改變的時候,我們就不讓數(shù)據(jù)的查詢?nèi)?shù)據(jù)庫進(jìn)行操作,而去內(nèi)存中取數(shù)據(jù),這樣就大大降低了數(shù)據(jù)庫的讀寫次數(shù),而且從內(nèi)存中讀數(shù)據(jù)的速度比去數(shù)據(jù)庫查詢要快一些,這樣同時又提高了效率。
使用緩存減輕數(shù)據(jù)庫的負(fù)載:
在開發(fā)網(wǎng)站的時候如果有一些數(shù)據(jù)在短時間之內(nèi)不會發(fā)生變化,而它們還要被頻繁訪問,為了提高用戶的請求速度和降低網(wǎng)站的負(fù)載,就把這些數(shù)據(jù)放到一個讀取速度更快的介質(zhì)上(或者是通過較少的計(jì)算量就可以獲得該數(shù)據(jù)),該行為就稱作對該數(shù)據(jù)的緩存。該介質(zhì)可以是文件/數(shù)據(jù)庫/內(nèi)存。內(nèi)存經(jīng)常用于數(shù)據(jù)庫緩存。
緩存的兩種形式:
頁面緩存經(jīng)常用在CMS(content manage system)內(nèi)存管理系統(tǒng)里面。
數(shù)據(jù)緩存經(jīng)常會用在頁面的具體數(shù)據(jù)里面。
緩存分為兩種:
頁面緩存(smarty靜態(tài)化技術(shù))
數(shù)據(jù)緩存
(3)Redis介紹
我們要學(xué)習(xí)的一個緩存技術(shù)就是----Redis:
Redis是Remote Dictionary Server(遠(yuǎn)程數(shù)據(jù)服務(wù))的縮寫,由意大利人antirez(Salvatore Sanfilippo)開發(fā)的一款內(nèi)存高速緩存數(shù)據(jù)庫,該軟件使用C語言編寫,它的數(shù)據(jù)模型為key-value。它支持豐富的數(shù)據(jù)結(jié)構(gòu)(類型),比如String/List/Hash/Set/Sorted Set。
可持久化(一邊運(yùn)行,一邊把數(shù)據(jù)往硬盤中備份一份,防止斷電等情況導(dǎo)致數(shù)據(jù)丟失,等斷電情況恢復(fù)之后,Redis再把硬盤中的數(shù)據(jù)恢復(fù)到內(nèi)存中),保證了數(shù)據(jù)的安全。
4)redis和memcache比較
1.Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。
2.Redis支持master-slave(主-從)模式應(yīng)用。
3.Redis支持?jǐn)?shù)據(jù)持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進(jìn)行使用
4.Redis單個value的最大限制是1GB,memcached只能保存1MB的數(shù)據(jù)。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Java設(shè)計(jì)模式七大原則之單一職責(zé)原則詳解
單一職責(zé)原則(Single Responsibility Principle, SRP),有且僅有一個原因引起類的變更。簡單來說,就是針對一個java類,它應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé)。本文將詳細(xì)介紹一下Java設(shè)計(jì)模式七大原則之一的單一職責(zé)原則,需要的可以參考一下2022-02-02Java使用dom4j實(shí)現(xiàn)對xml簡單的增刪改查操作示例
這篇文章主要介紹了Java使用dom4j實(shí)現(xiàn)對xml簡單的增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了Java使用dom4j實(shí)現(xiàn)對xml簡單的增刪改查基本操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05Java中ArrayList和LinkedList的遍歷與性能分析
這篇文章主要給大家介紹了ArrayList和LinkedList這兩種list的五種循環(huán)遍歷方式,各種方式的性能測試對比,根據(jù)ArrayList和LinkedList的源碼實(shí)現(xiàn)分析性能結(jié)果,總結(jié)結(jié)論。相信對大家的理解和學(xué)習(xí)具有一定的參考價(jià)值,有需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2016-12-12JAVA中通過自定義注解進(jìn)行數(shù)據(jù)驗(yàn)證的方法
java 自定義注解驗(yàn)證可自己添加所需要的注解,下面這篇文章主要給大家介紹了關(guān)于JAVA中通過自定義注解進(jìn)行數(shù)據(jù)驗(yàn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Java之String字符串在JVM中的存儲及其內(nèi)存地址的問題
這篇文章主要介紹了Java之String字符串在JVM中的存儲及其內(nèi)存地址的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java設(shè)計(jì)模式中組合模式應(yīng)用詳解
組合模式,又叫部分整體模式,它創(chuàng)建了對象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對單個對象和組合對象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下2022-11-11Java使用Sharding-JDBC分庫分表進(jìn)行操作
Sharding-JDBC 是無侵入式的 MySQL 分庫分表操作工具,本文主要介紹了Java使用Sharding-JDBC分庫分表進(jìn)行操作,感興趣的可以了解一下2021-08-08