redis緩存邏輯問題探討
在接觸Redis后,針對一個簡單的博客點贊系統,我們希望利用Redis解決文章點贊總數和用戶點贊狀態的存儲問題。然而,在設計過程中,我們遇到了如下困惑:
A用戶點贊后,點贊信息存在Redis中。當A用戶刷新頁面重新加載,此時從mysql查詢的數據中尚未同步Redis數據。在這種情況下,我們是否需要遍歷MySQL查詢結果,同時向Redis查詢判斷用戶對當前文章是否已經點贊,將MySQL的文章總數加上Redis的點贊總數返回給前端?
對此,我們應重新審視Redis在該場景中的角色。Redis作為緩存的作用,是加速數據訪問。它與MySQL的關系并非同步關系,而是“Cache Aside”模式:
讀操作:
- 首先從Redis查詢所需數據。
- 如果Redis存在該數據,直接返回。
- 如果Redis不存在,則從MySQL讀取數據,并將結果存入Redis,再返回。
寫操作:
- 首先將數據寫入MySQL。
- 然后刪除Redis中的相應數據。
通過采用Cache Aside模式,我們就無需擔心Redis數據與MySQL數據的不一致問題,避免了大量的循環查詢。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END