redis缓存淘汰策略-基于LinkedHashMap实现LRU算法

redis缓存淘汰策略-LRU算法(最近最少使用)

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,
选择最近最久未使用的数据予以淘汰。

1,所谓缓存,

必须要有读+写两个操作,按照命中率的思路考虑,写操作+读操作时间复杂度都需要为O(1)

2,特性要求

2.1必须要有顺序之分,一区分最近使用的和很久没有使用的数据排序。2.2写和读操作一次搞定。
2.3如果容量(坑位)满了要删除最不长用的数据,每次新访问还要把新的数据插入到队头(按照业务你自己设定左右那一边是队头)
查找快、插入快、鹏除快,且还需要先后排序...…>什么样的数据结构可以满足这个问题?
你是否可以在O(1)时间复杂度内完成这两种操作?
如果一次就可以找到,你觉得什么数挑结构最合适??

基于LinkedHashMap实现LRU算法

代码

package lru;
import java.util.LinkedHashMap;
import java.util.Map;

public class LRUCacheDemo <k,v> extends LinkedHashMap<k,v> {
    private int capacity;
    /**
     *accessorder thc ordering modc
     <tt>true</tt> for access-order,
     <tt>false</tt> for insertion-order Cparom capacity
     **/
    public
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值