專案中為什麼要使用redis

2021-10-04 03:38:57 字數 773 閱讀 2503

你的專案中為什麼要使用redis呢,相信主要是從效能和併發考慮。

1.純記憶體操作

2.單執行緒操作,避免了頻繁的上下文切換

3.採用了非阻塞i\o多路復用機制

對於變動較少的資料,或者查詢時間比較長的資料,我們可以將查詢結果快取到redis,這樣請求就能夠迅速響應。特別是秒殺系統,在這種高併發情況下,可以有效緩解資料庫壓力。

1.快取和資料庫資料一致性問題

2.快取雪崩問題

3.快取擊穿問題

4.快取的併發競爭問題

如果你的redis只能儲存5g的資料,可是你寫了10g,那麼就會刪除5g的資料,那麼redis背後的資料淘汰策略就是—lru演算法,這個可以在redis.conf配置檔案進行配置。

一致性問題分為最終一致性和強一致性,資料庫和快取雙寫資料,必然會帶來資料一致性問題,如果對資料有強一致性要求,那麼不建議放入快取,我們只能保證最終一致性。

快取穿透即請求的資料快取中不存在,導致所有的請求都到達資料庫上,導致資料庫異常。

1.利用互斥鎖,快取失效則要請求互斥鎖去請求資料庫,沒得到鎖的請求只能等待,另外需要在獲取鎖後,重新檢視快取是否已經被先前的請求設定成功,這樣可以保證等待的請求可以重新從快取中讀取資料,而不是所有等待的請求都要請求資料庫。

2.非同步更新策略。無論是否讀到資料都直接返回,如果沒有讀到值,則非同步起乙個執行緒去更新快取。需要做快取預熱即專案啟動前先載入快取。

快取雪崩即大量key同時過期,導致大量請求都請求到資料庫,導致資料庫異常。

1.給快取的key增加乙個隨機時間值,避免集體失效過期。

為什麼要使用redis

1.什麼是redis?redis是乙個開源的 高效能的 基於鍵值對的快取與儲存系統,通過提供多種鍵值資料型別來適應不同場景下的快取與儲存需求。2.redis支援鍵值資料型別有哪些?3.為什麼redis這麼快?redis資料庫中的所有資料都儲存在記憶體中。由於記憶體的讀寫速度遠快於硬碟,因此redis...

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...