分布式本地快取(JVM快取)

2022-08-29 19:18:10 字數 435 閱讀 4001

適用本地(jvm)快取的場景:

1、對效能有非常高的要求。

2、不經常變化。

3、占用記憶體不大。

4、有訪問整個集合的需求。

需要特別注意的地方:

1、如果是快取查不到,再查db。切記一定要加上鎖,不然如果多個執行緒同時去查快取,然後查不到,然後又同時去查db,執行緒足夠多,有可能出現穿透db的情況。

2、如果某個節點存在多個例項(集群),那麼每個例項中的本地快取有可能出現不一致(每個快取重新整理的時間點不可能完全一致)。如果是公共的快取,比如庫存等,應該放到redis中。

3、每個例項刷快取的執行緒,盡量是增量刷(有改動的行刷進記憶體中)。

4、如果快取有可能出現多個執行緒同時操作,選擇執行緒安全且高效的集合,比如concurrenthashmap,並預估可能存入的資料量,初始容量設定成2的n次方(原因請看hashmap原理的隨筆)。

本地快取與分布式快取

因為系統已經無法從優化業務 的角度去優化系統了 為了提高系統的效能 可以將對資料一直性不高和不會頻繁修改的資料存入快取中 避免頻繁訪問資料庫 以此來優化效能 首先去快取中查詢如果沒有再從資料庫中查詢並儲存至快取中 如果有直接返回 可以在專案中新建乙個map用雲儲存快取資料 快取使用流程和之前一樣 有...

分布式快取 快取擊穿

快取擊穿,是指乙個key非常熱點,在不停的扛著大併發,大併發集中對這乙個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破快取,直接請求資料庫,就像在乙個屏障上鑿開了乙個洞。快取擊穿和快取雪崩有點類似,區別是快取擊穿針對的是某乙個非常熱點的key,這個key在某一時刻失效造成所有請求都訪問資料...

分布式快取

分布式快取 原則來說跟應用伺服器分布式應該是一樣,但快取是有狀態的。怎麼樣提高命中?1.最原始的演算法 那就是key hash取模,取到伺服器ip。在大量伺服器伸縮行有問題,加入一台伺服器就有可能讓所有的快取都失效。如 key hash 後是100,取10膜是0,取11膜 1,101 取10膜是1,...