LRU缓存用大键。引用?

时间:2018-04-19 20:21:48

标签: python python-2.7 caching memoization lru

我有以下困境,实施LRU算法。 对于我必须存储的每个条目(键,值,时间戳) 正如您猜测的那样,缓存结构可以是:

 cache[key] = [ value, tstamp ]
到目前为止一切顺利。问题是LRU算法需要这样 当我必须清除元素(因为缓存已满)时,我必须这样做 线性搜索时间戳以删除最少使用的项目,这很慢。

另一方面,我无法构建反向哈希tstamp =>关键,因为 key是1KByte大,额外的内存使用将否定缓存的使用。

保留速度但不增加内存使用量的任何想法?

如果我可以提供一些参考资料,我可能会引用缓存密钥而无需分配额外的内存!

我无法使用LRU lib,因为默认情况下密钥是不可用的,我必须事先对其进行转换。我也使用2.7

1 个答案:

答案 0 :(得分:0)

如果您想使用开箱即用的LRU缓存,请参阅functools.lru_cache

如果您需要自己实施,请使用链接列表来跟踪功能调用历史记录,请参阅my other answer关于functools.lru_cache内部工作方式的问题。