如何保證Redis和MySQL資料一致性

2021-10-16 18:13:17 字數 553 閱讀 1937

如何保證redis和mysql資料一致性,這個問題真的是面試問的最多的乙個問題了,所以總結一下,類似的問題,比如如何保證es和mysql的資料一致性,凡是涉及到資料多個地方讀寫,有資料一致性的需求和同步操作,以下總結的方法都可考慮。

redis和mysql資料一致性說的是,redis作為快取,必須保持跟mysql中資料一致,在更新mysql資料的時候,redis中也必須更新到最新的值,這樣先從redis快取中讀取的值就是我們最新的值,不會有髒資料。

核心:保證更新快取的操作能夠按照資料庫資料的更新序列執行,不會發生舊資料覆蓋新資料。

總結

快取一般只是解決讀效能低下的問題,更新資料庫和更新快取是兩個操作,不僅要保證這個操作的原子性,還要保證更新快取的順序問題,要保證對快取的更新必須能夠按照資料庫資料更新的順序來執行,但是,在更新快取的時候,可能會因為網路延遲等問題,

先執行的更新操作慢於後執行的更新操作,就會覆蓋掉新資料,產生髒資料。在一定要保證獲取最新資料的場景下,建議放棄使用快取,從資料庫讀取最新的資料。如果可以接收資料最終一致性,那就採用先刪除快取再更新資料庫的策略。

如何保證Redis的高併發和高可用?

就是如果你用redis快取技術的話,肯定要考慮如何用redis來加多台機器,保證redis是高併發的,還有就是如何讓redis保證自己不是掛掉以後就直接死掉了,redis高可用 redis高併發 主從架構,一主多從,一般來說,很多專案其實就足夠了,單主用來寫入資料,單機幾萬qps,多從用來查詢資料,...

Mysql如何保證資料不會丟失

簡單來說就是依靠redo log和binlog保證持久化到磁碟後就可以保證,異常重啟資料可以正常恢復 這裡主要說下這兩個log的寫入機制。乙個事務執行的過程中,會先把日誌寫入到binlog cache中,事務提交的時候再把binlog cache中的日誌寫到binlog中。系統給binlog cac...

如何保證redis中都是熱點資料

redis 記憶體資料集大小上公升到一定大小的時候,就會施行資料淘汰策略。redis 提供 6種資料淘汰策略 volatile lru 從已設定過期時間的資料集 server.db i expires 中挑選最近最少使用的資料淘汰 volatile ttl 從已設定過期時間的資料集 server.d...