日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

​Redis的各种“坑”,你知道多少?

發布時間:2025/3/16 数据库 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ​Redis的各种“坑”,你知道多少? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis做為目前互聯網標配的技術中間件,在緩存數據庫(K-V)占有市場率一直雄霸榜首。不管是傳統項目重構,還是現在流行的分布式微服務架構,它都有廣泛應用。

物聯網系統????

傳統項目網優系統重構????

而且自從Redis 6.*版本正式發布,里面包含多項重大功能更新使其性能又進一步大幅度提升。更加鞏固了它在緩存數據庫的“一哥”地位。

它在架構中最基本的用法,是分擔數據壓力,提升并發量與用戶感知度。

比如:通過以下的架構,將部分非事務的操作、高頻展示信息、靜態信息等存放在Redis(用戶基本信息、權限信息、區域信息、庫存等)。

用戶請求數據時,會先從Redis獲取,如果Redis有,就直接返回,如果Redis沒有,再從數據庫里獲取,并緩存一份至Redis,下次用戶再請求時,就不用訪問數據庫,節省寶貴的數據庫資源,并提升用戶的感知度(什么操作和硬盤打交道多了,肯定快不起來)。

這時,大廠高頻面試題來了,數據是從數據庫復制到Redis中的,查詢的時候一切安好,如果此時數據發生了變化,如何保證兩者的數據一致性?請結合你的項目經驗進行闡述。

問題我詳細地描述一下:數據在Redis和MySQL都存儲了一份,那你在更新數據時,怎么保證兩邊的數據一致?先更新數據庫,再更新Redis?如下圖所示:

  • 步驟1:線程1更新MySQL,庫存=100

  • 步驟2:線程1更新Redis,庫存=100

  • 步驟3:線程2更新MySQL,庫存=90

  • 步驟4:線程2更新MySQL,庫存=90

有并發線程1和2,他們兩都需要更新庫存,如果此時命令執行順序按照預期行為走了,好像沒什么問題。

但是,如果在遠程調用過程中,網絡出了問題(抖動、超時、阻塞等)呢?如下圖所示:

  • 步驟1:線程1更新MySQL,庫存=100

  • 步驟2:線程2更新MySQL,庫存=90

  • 步驟3:線程2更新Redis,庫存=90

  • 步驟4:線程1更新MySQL,庫存=100

發現問題所在了吧,數據不符合基本邏輯了,這時候在Redis獲取的數據是錯的,和數據庫的信息不一致(數據庫中是90,而Redis中是100)。

當操作序列沒有嚴格按照請求的先后順序執行時,會引發并發安全問題。

沒錯,這就是在架構使用Redis必須考慮的數據一致性解決方案,你有思路么?以下方案你能回答出幾種?

  • 懶加載;

  • 延遲雙刪;

  • 操作隊列,使用鎖;

  • 設置超時時間;

  • 引入其他中間件,Canal。

  • 如果我告訴上面的方案,都行!我想繼續和你聊聊你的實際應用場景是什么?你還有思路么?

    Redis作為現在互聯網企業的標配技術棧,在使用它給我們帶來便利的同時,它還會給我們帶來很多問題,數據一致性只是其中一個,除此之外,以下問題你又有考慮到么?

    • 緩存擊穿、緩存穿透、緩存雪崩你如何解決?

    • 數據傾斜,冷熱數據分離怎么考慮?

    • 內存淘汰你如何考慮?

    • 分布式鎖的高可用方案你如何考量?

    • Redis的性能優化你如何實現?

    • epoll底層實現細節

    • Redis 6.*新版本特性

      等等,這里就不一一例舉了。

    上面的問題聽過沒見過,一知半解,又或者不知道如何和實戰結合?沒關系。為了讓大家搞明白Redis在大廠的實戰場景以及它的底層實現細節(面試極愛問)。

    我特邀請James(前阿里)& 大飛(前美團)來給大家分享一堂有關Redis的課程《千萬級Redis架構,底層原理剖析&企業級實戰》,本堂課程將結合實戰&高頻面試問題來帶大家一探Redis的體系知識。

    添加助教老師微信“lzc1314592”或掃面下方二維碼領取課程預習資料

    本號專屬福利來啦——前50名限時優惠~原價199元,限時優惠0.1元????

    而且為了幫助大家搞定大廠面試,我特意申請了專屬的額外福利,當晚完成聽課后即可找助手領取:學習筆記&面試資料。

    長按上圖添加助教老師微信“lzc1314592”

    回復“5102”領取【2021 Java大廠面試解析+后端進階完整筆記】

    總結

    以上是生活随笔為你收集整理的​Redis的各种“坑”,你知道多少?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。