手撕lru
LRU(Least Recently Used,最近最少使用)缓存算法的核心思想是:优先淘汰那些“最久未被使用”的缓存数据。换句话说,当缓存容量达到上限时,系统会将最近最少使用的数据从缓存中移除,为新数据腾出空间。下面我将结合原理、实现细节和实际例子,深入讲解为什么LRU缓存会淘汰数据。
- 为什么要淘汰缓存数据?
缓存容量有限,不能无限制地存储所有数据。当缓存满了,必须有策略选择哪些数据被保留,哪些被淘汰。LRU算法基于“时间局部性”原理:
最近被访问的数据很可能在未来也会被访问(热数据);
很久没被访问的数据很可能不再被访问(冷数据)。
所以,淘汰最久未使用的数据,可以最大化缓存的命中率,提升系统性能。
- LRU缓存淘汰的具体原因和逻辑
LRU缓存淘汰的根本原因是缓存容量有限,且需要保证缓存中存储的是最有价值的数据。具体逻辑如下:
缓存维护一个数据访问顺序结构(通常是双向链表),头部是最近访问的数据,尾部是最久未访问的数据。
每当访问缓存中的数据时,将该数据移动到链表头部,表示它是最新使用的。
当插入新数据且缓存已满时,移除链表尾部的数据