適用本地(JVM)緩存的場景:
1、對性能有非常高的要求。
2、不經常變化。
3、占用內存不大。
4、有訪問整個集合的需求。
需要特別注意的地方:
1、如果是緩存查不到,再查DB。切記一定要加上鎖,不然如果多個線程同時去查緩存,然后查不到,然后又同時去查DB,線程足夠多,有可能出現穿透DB的情況。
2、如果某個節點存在多個實例(集群),那么每個實例中的本地緩存有可能出現不一致(每個緩存刷新的時間點不可能完全一致)。如果是公共的緩存,比如庫存等,應該放到redis中。
3、每個實例刷緩存的線程,盡量是增量刷(有改動的行刷進內存中)。
4、如果緩存有可能出現多個線程同時操作,選擇線程安全且高效的集合,比如ConcurrentHashMap,並預估可能存入的數據量,初始容量設置成2的n次方(原因請看HashMap原理的隨筆)。