带缓存的HTTP代理服务器(八)

来源:互联网 发布:js数组转为json字符串 编辑:程序博客网 时间:2024/06/10 00:44

项目地址:https://code.csdn.net/sakeven/httpproxy

LRU算法

LRU算法,即Least recently used,最近最少使用算法,是一种缓存替换算法。
核心思想为,“最近被使用了,那么就很有可能下次还会被使用”。
这个算法,会把最近被使用的资源放到最前面,而最近最少使用的资源会被逐渐挤到尾部,当资源达到一定的容量限制时,最后面的资源就回被删除。

当我看到这个算法时,就联想到了splay tree伸展树。splay tree 是一棵二叉排序树,在每次的插入、删除、访问等过程会把这次访问的结点通过旋转搬移到树根,这样经常被访问的结点就会离树根较近,查找过程所需的时间会更少。与LRU算法有相似之处。

我的项目中采用的用一个map(即红黑树结构)储存cache,并定时清理,但是这样做会造成在大量访问不同页面的时候程序的内存会不断增长变大,最后爆了,所以本有必要限制缓存大小并提高缓存的命中率,此时LRU算法是个不错的选择。
0 0
原创粉丝点击