缓存和缓存淘汰算法

一、内存、缓存、寄存器

  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

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