python实现LRU热点缓存及原理
作者:dpj999 时间:2022-01-08 01:26:15
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
标签:python,LRU,缓存
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python实现根据给定坐标点生成多边形mask的例子
2022-03-22 14:40:15
Google的设计导引
2008-04-06 14:18:00
django xadmin中form_layout添加字段显示方式
2023-08-06 23:59:12
![](https://img.aspxhome.com/file/2023/0/76070_0s.jpg)
python常见读取语音的3种方法速度对比
2021-03-08 11:12:33
Python命名空间及作用域原理实例解析
2021-05-10 17:57:40
![](https://img.aspxhome.com/file/2023/0/78720_0s.png)
Python时间和字符串转换操作实例分析
2023-04-15 22:58:08
重写django的model下的objects模型管理器方式
2023-04-24 15:10:14
Python协程实践分享
2023-09-01 05:50:51
![](https://img.aspxhome.com/file/2023/5/62875_0s.png)
golang微服务框架基础Gin基本路由使用详解
2023-07-23 10:31:19
再谈 Web 字体的现状与未来[译]
2009-11-24 13:55:00
![](https://img.aspxhome.com/file/UploadPic/200911/24/webfonts_example-thumb-640xauto-7429-10s.png)
Typecho插件实现添加文章目录的方法详解
2023-05-25 07:19:04
js友好的表单验证程序vform
2007-08-16 13:32:00
HTML和CSS中的视觉语义
2010-07-09 13:08:00
![](https://img.aspxhome.com/file/UploadPic/20107/9/01-27s.jpg)
python中map()与zip()操作方法
2023-11-11 08:09:29
18个超棒的Web和移动应用开发框架
2011-03-31 17:04:00
ASP.Net MVC 布局页、模板页使用方法详细介绍
2023-06-28 19:24:31
Jsp+Servlet实现简单登录注册查询
2023-07-15 18:08:08
![](https://img.aspxhome.com/file/2023/4/97884_0s.png)
asp中判断是否是手机浏览器以及手机类型
2014-12-06 09:33:05
数据库大战: MS SQL Server & IBM DB2
2009-08-25 16:24:00
![](https://img.aspxhome.com/file/UploadPic/20098/2009825222159792s.jpg)
JavaScript的事件代理比你想的要简单
2009-04-27 12:40:00