zoukankan      html  css  js  c++  java
  • python实现LRU热点缓存

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

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

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

     

     class LRUCache():
         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

     

  • 相关阅读:
    vue cli 3 构建vue项目
    hadoop综合大作业
    理解Mapreduce
    熟悉常用的HBase操作
    常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取新闻
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/ddpj/p/11754610.html
Copyright © 2011-2022 走看看