redis怎么跟數(shù)據(jù)庫同步 Redis緩存怎么與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步?
Redis緩存怎么與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步?這種writer-reader架構(gòu)的總體思想是,writer將在緩存更新階段解決一致性問題。當(dāng)數(shù)據(jù)庫數(shù)據(jù)發(fā)生變化時,redis會同步更新,以保證緩存更新的成功。
Redis緩存怎么與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步?
這種writer-reader架構(gòu)的總體思想是,writer將在緩存更新階段解決一致性問題。當(dāng)數(shù)據(jù)庫數(shù)據(jù)發(fā)生變化時,redis會同步更新,以保證緩存更新的成功。作為完整性判斷,您可以使用自遞增的版本號(或時間戳)來判斷數(shù)據(jù)是否是最新的,而無需檢查所有屬性。作為后檢測,可以對其進(jìn)行優(yōu)化以降低掃描成本。例如,只應(yīng)使用最新時間段(如10分鐘)內(nèi)的更新數(shù)據(jù)。這一套應(yīng)該相對較小,在redis中的檢查成本相對較低。
當(dāng)數(shù)據(jù)庫里的數(shù)據(jù)修改以后怎么和redis緩存進(jìn)行同步?
緩存的前提是數(shù)據(jù)實時性不一致。如果您需要實時一致的數(shù)據(jù),您將失去MySQL緩存的重要性。最好直接在redis中實現(xiàn)業(yè)務(wù)。
邏輯如下:
每次查詢數(shù)據(jù)時,首先從redis查詢,發(fā)現(xiàn)沒有這樣的數(shù)據(jù),然后在mysql中查詢,將結(jié)果寫入redis,設(shè)置生存期。(鍵是SQL語句,值是結(jié)果。這幾乎不合邏輯)
當(dāng)MySQL被修改和添加時,redis將不會被修改。只有在鍵過期和下一次查詢時,數(shù)據(jù)才會更新。