如何用JavaScript实现LRU缓存的三种方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2352个文字,预计阅读时间需要10分钟。
目录分析使用Map实现LRU缓存使用Object+Array实现LRU缓存使用双向链表实现LRU总结LRU全称针对的是在有限的内存空间内,只缓存最近使用的数据。
目录
- 分析
- 使用Map实现LRU缓存
- 使用Object + Array实现LRU缓存
- 使用双向链表实现LRU
- 总结
LRU全称为Least Recently Used,即最近使用的。针对的是在有限的内存空间内,只缓存最近使用的数据(即get和set的数据),超过有限内存空间的数据将会被删除。这个在面试题中也是常会被问到的内容,接下来就看看怎么来实现。
分析
从定义来看,LRU至少有两个特性:通过键值对读写、有序。实现键值对读写,一般我们会使用哈希表来表示,注意哈希表是一个逻辑结构,实际上我们需要使用object、map等来实现;数据有序,即最近使用的数据放在前面,已经过时的数据放在后面或被删除,并且支持数据是可排序的,我们可以想到数组、链表、map之类的数据格式。因此,我们有三种方式可以实现LRU缓存:
- Map
- Object + Array
- LinkedList
使用Map实现LRU缓存
Map对象保存的是键值对,并且可以记住键的原始插入顺序。
本文共计2352个文字,预计阅读时间需要10分钟。
目录分析使用Map实现LRU缓存使用Object+Array实现LRU缓存使用双向链表实现LRU总结LRU全称针对的是在有限的内存空间内,只缓存最近使用的数据。
目录
- 分析
- 使用Map实现LRU缓存
- 使用Object + Array实现LRU缓存
- 使用双向链表实现LRU
- 总结
LRU全称为Least Recently Used,即最近使用的。针对的是在有限的内存空间内,只缓存最近使用的数据(即get和set的数据),超过有限内存空间的数据将会被删除。这个在面试题中也是常会被问到的内容,接下来就看看怎么来实现。
分析
从定义来看,LRU至少有两个特性:通过键值对读写、有序。实现键值对读写,一般我们会使用哈希表来表示,注意哈希表是一个逻辑结构,实际上我们需要使用object、map等来实现;数据有序,即最近使用的数据放在前面,已经过时的数据放在后面或被删除,并且支持数据是可排序的,我们可以想到数组、链表、map之类的数据格式。因此,我们有三种方式可以实现LRU缓存:
- Map
- Object + Array
- LinkedList
使用Map实现LRU缓存
Map对象保存的是键值对,并且可以记住键的原始插入顺序。

