1. 程式人生 > >分布式本地緩存(JVM緩存)

分布式本地緩存(JVM緩存)

場景 內存 庫存 hashmap 緩存 不一致 穿透 性能 設置

適用本地(JVM)緩存的場景:

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

2、不經常變化。

3、占用內存不大。

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

需要特別註意的地方:

1、如果是緩存查不到,再查DB。切記一定要加上鎖,不然如果多個線程同時去查緩存,然後查不到,然後又同時去查DB,線程足夠多,有可能出現穿透DB的情況。

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

3、每個實例刷緩存的線程,盡量是增量刷(有改動的行刷進內存中)。

4、如果緩存有可能出現多個線程同時操作,選擇線程安全且高效的集合,比如ConcurrentHashMap,並預估可能存入的數據量,初始容量設置成2的n次方(原因請看HashMap原理的隨筆)。

分布式本地緩存(JVM緩存)