快取技術是保障系統效能的基礎技術、核心技術。
① 最大程度上避免對資料庫的併發查詢,從而降低因為資料庫資源不足導致的系統故障。
② 提公升系統的響應速度,保證使用者體驗
總之快取使系統穩定高效的執行。
如果你的系統使用到了資料庫,但沒有使用快取,那你的**一定沒有多少訪問量;如果有訪問量,那你的**可用狀態一定是斷斷續續的。
分布式快取:常用redis,memcached
分布式快取用於集群環境下多節點使用同乙份快取的情況,從而減少資料庫查詢
分布式快取有網路io,因此吞吐率與快取的資料大小有較大關係
分布式快取網路io導致的時間消耗不可忽略(非常重要)
本地快取:ehcache,jbosscache,map(concurrenthashmap)等
本地快取非常高效,從分布式快取取一次資料消耗的時間可以從本地快取取幾千幾萬甚至百萬次。
本地快取在集群環境下存在不同節點資料不一致問題,因此使用時需要考慮快取的時效性,以及快取資料對不一致的敏感程度
快取時效性選擇
實際情況下不同場景對同一資料的時效性有差異,比如商品的庫存,商品頁面展示是否可以購買時可以有短暫的快取,但提交訂單時必須是實時的資料。
不同的業務資料對時效性的要求不一樣,比如商品屬性時效性要求較低,商品**和庫存對時效性要求較高
本地快取+分布式快取構建高效能**
使用本地快取做一級快取,減少分布式快取的訪問量(網路io頻寬消耗及網路時間消耗)
使用分布式快取做二級快取,減少集群環境下訪問資料庫的次數
本地快取與分布式快取
因為系統已經無法從優化業務 的角度去優化系統了 為了提高系統的效能 可以將對資料一直性不高和不會頻繁修改的資料存入快取中 避免頻繁訪問資料庫 以此來優化效能 首先去快取中查詢如果沒有再從資料庫中查詢並儲存至快取中 如果有直接返回 可以在專案中新建乙個map用雲儲存快取資料 快取使用流程和之前一樣 有...
分布式本地快取(JVM快取)
適用本地 jvm 快取的場景 1 對效能有非常高的要求。2 不經常變化。3 占用記憶體不大。4 有訪問整個集合的需求。需要特別注意的地方 1 如果是快取查不到,再查db。切記一定要加上鎖,不然如果多個執行緒同時去查快取,然後查不到,然後又同時去查db,執行緒足夠多,有可能出現穿透db的情況。2 如果...
分布式快取 快取擊穿
快取擊穿,是指乙個key非常熱點,在不停的扛著大併發,大併發集中對這乙個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破快取,直接請求資料庫,就像在乙個屏障上鑿開了乙個洞。快取擊穿和快取雪崩有點類似,區別是快取擊穿針對的是某乙個非常熱點的key,這個key在某一時刻失效造成所有請求都訪問資料...