详解工程师不可不会的LRU缓存淘汰算法( 三 )

在这种实现当中我们没有用除了dict之外的其他任何工具 , 连LinkedList都是自己实现的 。 实际上在Python语言当中有一个数据结构叫做OrderedDict , 它是一个字典 , 但是它当中的元素都是有序的 。 我们利用OrderedDict来实现LRU就非常非常简单 , 代码量也要少得多 。
我们来看代码:
class LRU(OrderedDict):def __init__(self, cap=128, /, *args, **kwds):self.cap = capsuper().__init__(*args, **kwds)def __getitem__(self, key):# 查询函数value = http://kandian.youth.cn/index/super().__getitem__(key)# 把节点移动到末尾self.move_to_end(key)return valuedef __setitem__(self, key, value):# 更新函数super().__setitem__(key, value)if len(self)> self.cap:oldest = next(iter(self))del self[oldest]在上面一种实现当中由于只用了一个数据结构 , 所以整个代码要简洁许多 。 使用起来也更加方便 , 直接像是dict一样使用方括号进行查询以及更新就可以了 。 不过在其他语言当中可能没有OrderedDict这种数据结构 , 这就需要我们自己来编码实现了 。
好了 , 今天的文章就到这里 。 衷心祝愿大家每天都有所收获 。 如果还喜欢今天的内容的话 , 请来一个三连支持吧~(点赞、关注、转发)
- END -
本文始发于公众号:TechFlow , 求个关注


推荐阅读