mysql與redis數據一致性問題


在項目中經常會同時操作mysql與redis 那么如何保證數據的一致性呢

一般增刪改都是先操作MySQL數據庫,成功之后再操作Redis,但這里有個問題,如果MySQL操作成功了,但Redis突然出現異常,操作失敗,如何回滾MySQL操作。

使用注解@Transactional只會回滾MySQL異常的情況,Redis本身也不具備回滾功能,在MySQL操作成功的情況下,@Transactional注解會認為方法並沒有異常,會繼續執行而不回滾,這樣就導致了MySQL和Redis不一致的情況。

    為了避免這種情況,每次操作Redis之后,都會判斷Redis有沒有操作成功,操作失敗則進行手動回滾,加一行代碼:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 配合@Transactional注解即可解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM