天天看點

MySQL與Redis的差別與聯系詳解

1. MySQL和Redis的資料庫類型

MySQL是關系型資料庫,主要用于存放持久化資料,将資料存儲在硬碟中,讀取速度較慢.

Redis是NOSQL,即非關系型資料庫,也是緩存資料庫,即将資料存儲在緩存中,緩存的讀取速度快,能夠大大的提高運作效率,但是儲存時間有限.

2. MySQL的運作機制

MySQL作為持久化存儲的關系型資料庫,相對薄弱的地方在于每次請求通路資料庫時,都存在着I/O操作,如果反複頻繁的通路資料庫.第一:會在反複連結資料庫上花費大量時間,進而導緻運作效率過慢;第二:反複的通路資料庫也會導緻資料庫的負載過高,那麼此時緩存的概念就衍生了出來.

3. 緩存

緩存就是資料交換的緩沖區(cache)當浏覽器執行請求時,首先會對在緩存中進行查找,如果存在就擷取;否則就通路資料庫.

緩存的好處就是讀取速度快.

4. Redis資料庫

Redis資料庫就是一款緩存資料庫,用于存儲使用頻繁的資料,這樣減少通路資料庫的次數,提高運作效率.

5. Redis和MySQL的差別總結

5.1 類型上

從類型上來說,MySQL是關系型資料庫,Redis是緩存資料庫.

5.2 作用上

MySQL用于持久化的存儲資料到硬碟,功能強大,但是速度較慢

Redis用于存儲使用較為頻繁的資料到緩存中,讀取速度快.

5.3 需求上

MySQL和Redis因為需求的不同,一般都是配合使用.

5.4 場景選型上

Redis和MySQL要根據具體業務場景去選型.

5.5 存放位置

資料存放位置MySQL:資料放在磁盤

Redis:資料放在記憶體

5.6 适合存放資料類型

Redis适合放一些頻繁使用,比較熱的資料,因為是放在記憶體中,讀寫速度都非常快,一般會應用在下面一些場景:排行榜、計數器、消息隊列推送、好友關注、粉絲.

6. 資料可不可以直接全部用Redis存儲呢?

6.1 首先要知道MySQL存儲在磁盤裡,Redis存儲在記憶體裡,Redis既可以用來做持久存儲,也可以做緩存,而目前大多數公司的存儲都是MySQL + Redis,MySQL作為主存儲,Redis作為輔助存儲被用作緩存,加快通路讀取的速度,提高性能.

6.2 Redis存儲在記憶體中,如果存儲在記憶體中,存儲容量肯定要比磁盤少很多,那麼要存儲大量資料,隻能花更多的錢去購買記憶體,造成在一些不需要高性能的地方是相對比較浪費的,是以目前基本都是MySQL(主) + Redis(輔),在需要性能的地方使用Redis,在不需要高性能的地方使用MySQL,好鋼用在刀刃上.

6.3 MySQL支援sql查詢,可以實作一些關聯的查詢以及統計.

6.4 Redis對記憶體要求比較高,在有限的條件下不能把所有資料都放在Redis.

6.5 MySQL偏向于存資料,Redis偏向于快速取資料,但Redis查詢複雜的表關系時不如MySQL,是以可以把熱門的資料放Redis,MySQL存基本資料.