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