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