緩存和緩存淘汰算法

一、內存、緩存、寄存器

  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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章