网络编程
位置:首页>> 网络编程>> Python编程>> python实现LRU热点缓存及原理

python实现LRU热点缓存及原理

作者:dpj999  发布时间:2022-01-08 01:26:15 

标签:python,LRU,缓存

LRU

LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

基于列表+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
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com