1. 程式人生 > >redis與mysql的區別和理論解釋

redis與mysql的區別和理論解釋

我們首先先說一下mysql,

mysql是可以持久化儲存的關係型資料庫,功能強大,既然涉及到儲存那肯定要涉及到i/o操作(i/o操作就是輸入(Input)和輸出(Output)的意思)

訪問速度相較於非關係型資料會慢很多,為了解決這個問題,於是就出現了快取機制,把一些訪問頻次高的資料快取一部分到記憶體中,如果使用者在訪問網站的時候,首先先在快取中查詢,如果未命中,再去mysql中查詢.

所以如果是訪問量不高的網站的話,完全用mysql一個數據庫其實也可以完整的展現出頁面

然後,再說說redis,

redis是一種非關係型資料庫, 它最大的優點就是訪問資料的速度快,,它是在駐留在記憶體中執行的,所以訪問的速度更快,其中redis是

key-value的資料結構,每條資料都是一個鍵值對,鍵的型別是字串,且鍵不能重複,值的型別分為五種:

  • 字串string
  • 雜湊hash
  • 列表list
  • 集合set
  • 有序集合zset

-------------------------------------------------華麗的分界線------------------------------------------------------------------

終於到了重點部分,如果不想看兩前面的介紹,可以直接跳過,來到這裡.

其中兩者的區別:

1.首先說說他們的本質區別,前者為關係型資料庫,後者為非關係型資料庫

2.一個是在磁碟上執行一個是在記憶體中執行

3.redis的資料相比於mysql,更容易丟失,因為是儲存在記憶體中的


順帶提一下,其中普通的快取中只提供了簡單的資料結構,比如只是簡單的string儲存,但redis就不一樣,它提供了大量的資料結構,其中包括了string,hashset,set,zset,list五中型別,有了這層封裝的功能,這就方便很多了,這是和普通快取不同的地方.

然後最重要的是實現的功能還一樣,所以慢慢的選擇redis的人更多了

最後說一句,mysql和redis兩者功能並不衝突,可以協同一起使用,效率會更高