一、內存、緩存、寄存器
1. CPU <===> 寄存器 <===> 緩存 <===> 內存
寄存器:cpu中的一部分,cpu直接拿寄存器中的數據,包含:指令寄存器、程序計數器。寄存器從緩存或者內存中獲取數據。
緩存:直接從內存拿數據速度很慢,緩存是數據的一種中轉方式。
一級緩存:內置在cpu內部,與cpu同速運行(但是在同步內存中的數據時,會對這個cache加鎖,所以沒寄存器快)
二級緩存和三級緩存:只能存儲數據,不能存儲原始指令。內存變大,速度變慢。
二、緩存算法:緩存放滿了之後的淘汰策略
FIFO:先進先出。移除最早放進來的。 缺:被置換的數據往往是被頻繁訪問的,所以不用這個。
LFU(Least Frequently Used):最近最少使用。移除一段時間內用的最少的. 需要維護訪問頻率:用小根堆+哈希表可以實現
LRU(Least Recently Used):移除最久未使用的(認爲它在將來被訪問的概率也很小,提高對熱點數據的緩存效率)。 Redis、Memcached等分佈式緩存系統有廣泛使用?
雙向鏈表+哈希表實現:鏈表表示熱點順序、哈希表用來存儲和查找
繼承LinkedHashMap可快速實現。 accessOrder: true基於訪問順序;false基於插入順序(默認)
三、spring的緩存
https://www.cnblogs.com/cac2020/p/6029666.html
https://www.iteye.com/blog/xp9802-2121997