MySQL和Redis的區別

2021-09-01 09:10:38 字數 1894 閱讀 4821

1.mysql和redis的資料庫型別

mysql是關係型資料庫,主要用於存放持久化資料,將資料儲存在硬碟中,讀取速度較慢。

redis是nosql,即非關係型資料庫,也是快取資料庫,即將資料儲存在快取中,快取的讀取速度快,能夠大大的提高執行效率,但是儲存時間有限。

2.mysql的執行機制

mysql作為持久化儲存的關係型資料庫,相對薄弱的地方在於每次請求訪問資料庫時,都存在著i/o操作,如果反覆頻繁的訪問資料庫。第一:會在反覆鏈結資料庫上花費大量時間,從而導致執行效率過慢;第二:反覆的訪問資料庫也會導致資料庫的負載過高,那麼此時快取的概念就衍生了出來。

3.快取

快取就是資料交換的緩衝區(cache),當瀏覽器執行請求時,首先會對在快取中進行查詢,如果存在,就獲取;否則就訪問資料庫。

快取的好處就是讀取速度快

4.redis資料庫

redis資料庫就是一款快取資料庫,用於儲存使用頻繁的資料,這樣減少訪問資料庫的次數,提高執行效率。

5.redis和mysql的區別總結

(1)型別上

從型別上來說,mysql是關係型資料庫,redis是快取資料庫

(2)作用上

mysql用於持久化的儲存資料到硬碟,功能強大,速度較慢,基於磁碟,讀寫速度沒有redis快,但是不受空間容量限制,價效比高

redis用於儲存使用較為頻繁的資料到快取中,讀取速度快,基於記憶體,讀寫速度快,也可做持久化,但是記憶體空間有限,當資料量超過記憶體空間時,需擴充記憶體,但記憶體**貴

(3)需求上

mysql和redis因為需求的不同,一般都是配合使用。

需要高效能的地方使用redis,不需要高效能的地方使用mysql。儲存資料在mysql和redis之間做同步。

缺點說明:

元件名叫yeeredisgroup,基本服務主要有四個,當資料到來的時候,會分別插入二個redis服務,這二個redis服務採用的是異地雙活的方案,當其中乙個redis服務掛了以後,會將這個redis服務從可用佇列中摘除,放入重試佇列中,另乙個redis則會繼續使用。同樣讀取redis的時候只會從可用佇列中讀取第乙個redis服務繼續讀取。

·惰性刪除:放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,如果過期的話,就刪除該鍵;如果沒有過期,就返回該鍵。

·定期刪除:每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面的過期鍵。至於要刪除多少過期鍵,以及要檢查多少個資料庫,則由演算法決定。

在這三種策略中,第一種和第三種為主動刪除策略,而第二種則為被動刪除策略。

redis採用的過期策略:惰性刪除+定期刪除

惰性刪除流程

在進行get或setnx等操作時,先檢查key是否過期,

若過期,刪除key,然後執行相應操作;

若沒過期,直接執行相應操作

定期刪除流程(簡單而言,對指定個數個庫的每乙個庫隨機刪除小於等於指定個數個過期key)

遍歷每個資料庫(就是redis.conf中配置的"database"數量,預設為16)

檢查當前庫中的指定個數個key(預設是每個庫檢查20個key,注意相當於該迴圈執行20次,迴圈體時下邊的描述)

如果當前庫中沒有乙個key設定了過期時間,直接執行下乙個庫的遍歷

隨機獲取乙個設定了過期時間的key,檢查該key是否過期,如果過期,刪除key

判斷定期刪除操作是否已經達到指定時長,若已經達到,直接退出定期刪除。

從記憶體資料庫持久化資料到aof檔案:

當key過期後,還沒有被刪除,此時進行執行持久化操作(該key是不會進入aof檔案的,因為沒有發生修改命令)

當key過期後,在發生刪除操作時,程式會向aof檔案追加一條del命令(在將來的以aof檔案恢復資料的時候該過期的鍵就會被刪掉)

aof重寫

重寫時,會先判斷key是否過期,已過期的key不會重寫到aof檔案

redis和mysql的區別

我們知道,mysql是持久化儲存,存放在磁碟裡面,檢索的話,會涉及到一定的io,為了解決這個瓶頸,於是出現了快取,比如現在用的最多的 memcached 簡稱mc 首先,使用者訪問mc,如果未命中,就去訪問mysql,之後像記憶體和硬碟一樣,把資料複製到mc一部分。redis和mc都是快取,並且都是...

Redis和MySQL的區別

mysql是關係型資料庫,是持久化儲存的,查詢檢索的話,會涉及到磁碟io操作,為了提高效能,可以使用快取技術,而memcached就是記憶體資料庫,資料儲存在記憶體中 當然也可以進行持久化儲存 可以用作快取資料庫。使用者首先去memcached查詢資料,如果未查找到 即快取未命中 才去mysql中查...

mysql和redis的區別

mysql和redis的資料庫型別 mysql是關係型資料庫,主要用於存放持久化資料,將資料儲存在硬碟中,讀取速度較慢。redis是nosql,即非關係型資料庫,也是快取資料庫,即將資料儲存在快取中,快取的讀取速度快,能夠大大的提高執行效率,但是儲存時間有限 mysql的執行機制 mysql作為持久...