使用Python实现一个简单的LRUCache
简介 我们都知道,Redis会使用“淘汰策略”来进行热点数据的管理,其中大部分场景下都会使用LRU(Least Recently used)算法,本文从一个简单的使用dict缓存斐波那契数列的值为例引出LRU的使用场景并使用Python实现一个简单的LRUCache。 使用缓存减少计算或者主数据库的开销 在实际的业务场景中,我们常常会使用缓存来减少程序的计算或者用户频繁访问主数据库的开销。比如说,我这里有一个接口函数fib,用户使用某一个天数来请求数据时,接口将计算结果返回给用户: def fib(n): if n <= 2: return 1 return fib(n-1) + fib(n-2) 为了减少程序计算的开销,我们可以使用一个字典去“缓存”对应的结果,也就是说, 我们可以提前计算好用户请求的天数与对应结果的对应信息,如果用户请求的天数在“缓存”中的话我们可以直接将缓存中的结果返回给用户,这样就有效的减少了一次程序的开销! 装饰器方式实现“缓存效果” # 字典中有的会从这里取值而不用计算,减少计算开销 dic = {1:1,2:1,3:2} def wrapper(func): global dic def inner(n): if n in dic: return dic[n] res = func(n) dic[n] = res return res return