什么是缓存
缓存(Cache)是一种存储数据的机制,用于加速数据的读取过程。它是计算机系统中为提高效率而设计的一种临时存储方式,通常存储着访问频繁的、即将被使用的数据或计算结果。缓存通常存在于内存中,因为内存读取速度比从硬盘等其他存储设备读取要快得多。
为什么要实现缓存系统
在缓存系统中,缓存淘汰策略的设计至关重要,因为服务器的内存有限,不能无限制地存储所有数据。有效的淘汰策略能够确保当内存空间不足时,系统能智能地选择删除哪些缓存数据,以优化性能并提高资源的访问效率。以下是几种常见的缓存淘汰策略。
- 先进先出(FIFO)策略:最简单的缓存淘汰策略,淘汰最早进入缓存的数据。
- 最近最久未使用(LRU)策略:淘汰最近最少使用的缓存数据,即缓存中最长时间没有被访问的数据。
- 最不经常使用(LFU)策略:淘汰访问频率最低的缓存数据,即缓存中访问次数最少的数据。
- 自适应替换(ARC)策略:淘汰最近最少访问的缓存数据,即缓存中最近最少被访问的数据。
在什么地方加入缓存系统?
缓存系统可以应用于数据库、文件系统、网络传输、操作系统等任何需要高速访问的数据源。缓存系统的加入可以提高系统的整体性能,降低系统的响应时间,并减少服务器的负载。
总的来说,一个流程的很多阶段都可以架设缓存系统,距离使用者越近就越能发挥缓存的效果。
缓存淘汰策略
先进先出(FIFO)策略
先进先出算法,是最简单的页面替换策略,按照页面进入内存的顺序来决定替换哪个页面。即优先淘汰最早进入内存的页面,不论这些页面之后是否被频繁访问。但是FIFO可能会导致“Belady异常”,即随着分配给进程的物理块数增加,缺页次数反而增加。
最近最久未使用(LRU)策略
LRU算法,是一种常用的页面替换算法,它认为最近最久未使用的数据是最不可能再次被访问的。LRU算法维护一个列表,记录每个页面被访问的顺序,每次访问页面时,将其移至列表的最前面。当内存空间不足时,LRU算法淘汰列表末尾的页面,即最近最久未使用的数据。
潜在问题:淘汰热点数据,如果有个数据在1个小时的前59分钟访问了1万次(可见这是个热点数据),再后一分钟没有访问这个数据,但是有其他的数据访问,就导致了我们这个热点数据被淘汰。