一,概述
散列表和链表这两种数据结构经常被放到一起使用。比如 Redis 的有序集合不仅使用了跳表,还用了散列表。再比如 Java 语言中的 LinkedHashMap 容器,也用到了散列表和链表两种数据结构。
二,LRU 缓冲淘汰算法
缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如硬件中的缓存: cpu 缓存,而 cpu 缓存又可以分为一级缓存(L1 Cache),二级缓存(L2 Cache),三级缓存(L3 Cache)。 软件中的缓存: 数据库缓存,数据库本身产品就自带缓存,redis 也可以作为数据库缓存。浏览器缓存,就是我们常说的 Cookie,本质上就是一个文件。
在计算机系统中,CPU 高速缓存(英语:CPU Cache)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于 CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。
缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策