LRU缓存淘汰算法
-
LRU的实现
- 利用链表保存元素的访问顺序
- 头部为长期未访问数据,尾部是采访问数据
- 更新位置时,需要遍历链表o(n)
-
优化:散列表可以将LRU淘汰算法时间复杂度降低到O(1)
- 需要增加一个指针,指向LRU的next节点
\
Redis有序集合
- 如果使用hash表,就不支持范围查询了
Java LinkedHashMap
-
基本概念:在hashmap的基础上增加了link
- 散列表的基础上,将插入顺序通过链串联起来
-
可以完美支持LRU算法
总结
-
为什么需要散列表+链表
- 散列表支持高效的插入,删除和插入,但是元素时无序的
- 通过引入链表,可以保证散列表元素的有序性
\