傳統Web項目:
可能存在性能問題。數據庫持久化數據主要是面向磁盤,磁盤的讀/寫比較慢,在一般管理系統沒有問題。
互聯網項目:
高併發,存在瞬間讀/寫大量數據的要求,如商品搶購、秒殺,一瞬間成千上萬的請求,需在極短的時間內完成成千上萬的讀、寫操作,易造成數據庫系統癱瘓,導致服務宕機的嚴重生產問題。
應用場景: 一、緩存常用的數據; 二、需要高速讀、寫的場合
Redis技術:
基於內存的數據庫,並提供一定的持久化功能。
性能優越:支持每秒十幾萬次的讀、寫操作;
支持集羣、分佈式、主從同步等配置,原則上可以無限擴展;
支持一定的事務能力,在高併發訪問下保證數據安全和一致性特別有用;
性能優越來至於3個方面:
1、基於ANSI C語言編寫,接近於彙編語言的機器語言,運行快速;
2、基於內存的讀、寫,自然比數據庫磁盤讀寫快得多
3、只有6種數據類型,數據結構簡單,規則較少,而數據庫則是範式、完整性、規範性考慮的規則多,處理業務會比較複雜。
應用:
一、緩存
對數據庫的讀、寫操作,一般是9:1~7:3,讀操作遠遠多於寫操作。
內存相對磁盤要貴的多。存儲信息,需從3個方面考慮
- 業務數據常用嗎?命中率如何?如果命中率很低,就沒有必要寫入緩存
- 該業務數據是讀操作多,還是寫操作多,如果寫操作多,需要頻繁寫入數據庫,也沒有必要使用緩存
- 業務數據大小如何?如果要存儲幾百兆字節的文件 ,會給緩存帶來很大的壓力,有沒有必要?
二、高速讀、寫場合
商品秒殺、搶紅包、淘寶、京東的雙十一活動,瞬間成千上萬的請求到達服務器。
考慮異步寫入數據庫,高速讀、寫場合中單單使用Redis去應對,把這些需要高速讀、寫的數據,緩存到Redis,而在滿足一定的條件下,觸發這些緩存的數據寫入數據庫中。(秒殺商品爲0,搶紅包金額爲0,觸發事件將Redis緩存的數據以批量的形式一次性寫入數據庫,從而完成持久化工作)