首页 > 编程语言 > 详细

python实现LRU热点缓存

时间:2019-10-28 20:06:23      阅读:88      评论:0      收藏:0      [点我收藏+]

基于列表+Hash的LRU算法实现。

  • 访问某个热点时,先将其从原来的位置删除,再将其插入列表的表头

  • 为使读取及删除操作的时间复杂度为O(1),使用hash存储热点的信息的键值

 

 class LRUCaceh():
     def __init__(self, size=5):
         ‘‘‘
         默认队列的长度为5
         使用列表来维护,使用字典来查询
         ‘‘‘
         self.size = size
         self.cache = dict()
         self.key = []
 ?
     def get(self, key):
         ‘‘‘
         获取缓存中的key的值
         ‘‘‘
         if self.cache.get(key):
             self.key.remove(key)
             self.key.insert(0, key)
             return self.cache[key]
         return None
 ?
     def set(self, key, value):
         ‘‘‘
         设置缓存,实现缓存淘汰
         ‘‘‘
         if self.cache.get(key):
             self.cache.pop(key)
             self.cache[key] = value
             self.key.remove(key)
             self.key.insert(0, key)
         elif len(self.key) == self.size:
             old_key = self.key.pop()
             self.key.insert(0, key)
             self.cache.pop(old_key)
             self.cache[key] = value
         else:
             self.key.insert(0, key)
             self.cache[key] = value

 

 

python实现LRU热点缓存

原文:https://www.cnblogs.com/ddpj/p/11754610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!