使用redis作為緩存,數(shù)據(jù)還需要存入數(shù)據(jù)庫中嗎? (推薦學習:Redis視頻教程)
我的答案是:
redis只是緩存,不是數(shù)據(jù)庫如mysql,所以redis中有的數(shù)據(jù)庫,mysql中一定有。
用戶請求先去請求redis,如果沒有,再去數(shù)據(jù)庫中去讀取。
redis中緩存一些請求量比較大的數(shù)據(jù)(這些緩存數(shù)據(jù),mysql中一定也是有的),沒必要所有數(shù)據(jù)都緩存到redis中。
之所以從緩存中拿數(shù)據(jù)會快,是因為緩存的數(shù)據(jù)存在于內存中,不像mysql的數(shù)據(jù)是存在磁盤上的,即不用經過從磁盤加載到內存這個過程(這個過程是非常耗時和低效的),直接從內存獲取數(shù)據(jù)。
當redis緩存崩潰的時候,那么不是海量的請求都去訪問數(shù)據(jù)庫了?數(shù)據(jù)庫能抗住嗎?
收下要分析,當成千億個請求同時訪問過來,數(shù)據(jù)庫為什么會扛不住?
①超大量的并發(fā),數(shù)據(jù)庫扛不住。
舉個例子就明白了。
10000萬個plsql客戶端,同時訪問Oracle進行數(shù)據(jù)庫查詢、寫入等操作,數(shù)據(jù)庫肯定吃不消。
從這個角度來說,redis并不能幫什么忙。
②數(shù)據(jù)庫存在低速設備上,每次訪問數(shù)據(jù)庫,都要經過io,即從磁盤調入內存的過程。這個才是使用redis等緩存機制的原因。