redis使用教程 有些“上古”程序員一直堅持反對使用redis怎么辦?
有些“上古”程序員一直堅持反對使用redis怎么辦?分享大人物的答案似乎合情合理。不要告訴我們是否使用redis。你必須告訴我們你為什么要使用redis。沒有redis的業(yè)務(wù)怎么了?世界上沒有免費的午
有些“上古”程序員一直堅持反對使用redis怎么辦?
分享大人物的答案似乎合情合理。
不要告訴我們是否使用redis。你必須告訴我們你為什么要使用redis。沒有redis的業(yè)務(wù)怎么了?世界上沒有免費的午餐。如果不直接使用頭部緩存/NoSQL,可能會帶來越來越嚴重的問題。
單個數(shù)據(jù)庫的最大優(yōu)點是易于實現(xiàn)事務(wù),并由數(shù)據(jù)庫本身保證。舉個簡單的例子,要下訂單,需要扣除庫存并插入訂單條目。如果inventory和order都是數(shù)據(jù)庫表條目,那么這個事務(wù)是無可挑剔的。如果庫存在redis中,訂單條目是mysql,通常需要先寫redis,成功后再寫數(shù)據(jù)庫。如果您寫數(shù)據(jù)庫失敗,需要回滾redis,如果由于網(wǎng)絡(luò)或其他原因回滾失敗,將再扣減一個存貨。不要認為這些事情很容易解決。事務(wù)處理的復(fù)雜性遠遠超出您的想象。例如,當您編寫mysql時,您在提交時就失去了連接。你無法判斷提交是成功還是失敗。你的redis是不是在倒退?
因此,當您引入一個新層時,您必須弄清楚您必須使用cache/NoSQL的目的以及您可以接受的一致性模型。否則,你就要出丑了。
redis mysql有幾種用法?
首先,我們需要知道MySQL存儲在磁盤上,redis存儲在內(nèi)存中。Redis可以用于持久存儲和緩存。目前,大多數(shù)公司使用MySQL redis作為主存儲,redis作為輔助存儲,以加快訪問和讀取速度,提高性能
那么為什么不直接使用redis來存儲呢?
我的觀點是:因為redis是存儲在內(nèi)存中的,如果存儲在內(nèi)存中,存儲容量肯定比磁盤小得多。如果你想存儲大量的數(shù)據(jù),你只能花更多的錢來購買內(nèi)存。因此,在一些不需要高性能的地方,這是相對浪費的。所以目前基本上是MySQL(主)Redis(輔),需要性能的地方用Redis,不需要高性能的地方用MySQL,刀片上用浩剛
看來其他答案都沒有提到這一點:Redis的持久化功能也可以防止緩存雪崩。應(yīng)該說,這就是redis支持持久性的必要性。
例如,假設(shè)后臺架構(gòu)是redis mysql,redis已經(jīng)關(guān)閉了持久性。有一天,redis服務(wù)器突然宕機,丟失了所有的內(nèi)存緩存。redis服務(wù)器恢復(fù)后,需要重新緩存MySQL的數(shù)據(jù)。如果讀取數(shù)據(jù)請求非常集中,MySQL可能會癱瘓,這就是所謂的緩存雪崩。
如果土豪公司只使用redis數(shù)據(jù)庫而不使用MySQL,就不會出現(xiàn)緩存雪崩問題,因為redis根本不是緩存功能,而是存儲功能。