婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 手動實現Redis的LRU緩存機制示例詳解

手動實現Redis的LRU緩存機制示例詳解

熱門標簽:超呼電話機器人 十堰營銷電銷機器人哪家便宜 北京400電話辦理收費標準 宿遷便宜外呼系統平臺 魔獸2青云地圖標注 日本中國地圖標注 鄭州人工智能電銷機器人系統 山東外呼銷售系統招商 貴州電銷卡外呼系統

前言

最近在逛博客的時候看到了有關Redis方面的面試題,其中提到了Redis在內存達到最大限制的時候會使用LRU等淘汰機制,然后找了這方面的一些資料與大家分享一下。 LRU總體大概是這樣的,最近使用的放在前面,最近沒用的放在后面,如果來了一個新的數,此時內存滿了,就需要把舊的數淘汰,那為了方便移動數據,肯定就得使用鏈表類似的數據結構,再加上要判斷這條數據是不是最新的或者最舊的那么應該也要使用hashmap等key-value形式的數據結構。

第一種實現(使用LinkedHashMap)

public class LRUCache {

  int capacity;
  MapInteger,Integer> map;

  public LRUCache(int capacity){
    this.capacity = capacity;
    map = new LinkedHashMap>();
  }

  public int get(int key){
    //如果沒有找到
    if (!map.containsKey(key)){
      return -1;
    }
    //找到了就刷新數據
    Integer value = map.remove(key);
    map.put(key,value);
    return value;
  }

  public void put(int key,int value){
    if (map.containsKey(key)){
      map.remove(key);
      map.put(key,value);
      return;
    }
    map.put(key,value);
    //超出capacity,刪除最久沒用的即第一個,或者可以復寫removeEldestEntry方法
    if (map.size() > capacity){
      map.remove(map.entrySet().iterator().next().getKey());
    }
  }

  public static void main(String[] args) {
    LRUCache lruCache = new LRUCache(10);
    for (int i = 0; i  10; i++) {
      lruCache.map.put(i,i);
      System.out.println(lruCache.map.size());
    }
    System.out.println(lruCache.map);
    lruCache.put(10,200);
    System.out.println(lruCache.map);
  }

第二種實現(雙鏈表+hashmap)

public class LRUCache {

  private int capacity;
  private MapInteger,ListNode>map;
  private ListNode head;
  private ListNode tail;

  public LRUCache2(int capacity){
    this.capacity = capacity;
    map = new HashMap>();
    head = new ListNode(-1,-1);
    tail = new ListNode(-1,-1);
    head.next = tail;
    tail.pre = head;
  }

  public int get(int key){
    if (!map.containsKey(key)){
      return -1;
    }
    ListNode node = map.get(key);
    node.pre.next = node.next;
    node.next.pre = node.pre;
    return node.val;
  }

  public void put(int key,int value){
    if (get(key)!=-1){
      map.get(key).val = value;
      return;
    }
    ListNode node = new ListNode(key,value);
    map.put(key,node);
    moveToTail(node);

    if (map.size() > capacity){
      map.remove(head.next.key);
      head.next = head.next.next;
      head.next.pre = head;
    }
  }

  //把節點移動到尾巴
  private void moveToTail(ListNode node) {
    node.pre = tail.pre;
    tail.pre = node;
    node.pre.next = node;
    node.next = tail;
  }

  //定義雙向鏈表節點
  private class ListNode{
    int key;
    int val;
    ListNode pre;
    ListNode next;

    //初始化雙向鏈表
    public ListNode(int key,int val){
      this.key = key;
      this.val = val;
      pre = null;
      next = null;
    }
  }
}

像第一種方式,如果復寫removeEldestEntry會更簡單,這里簡單的展示一下

public class LRUCache extends LinkedHashMapInteger,Integer> {
  private int capacity;
  
  @Override
  protected boolean removeEldestEntry(Map.EntryInteger, Integer> eldest) {
    return size() > capacity;
  }
}

到此這篇關于手動實現Redis的LRU緩存機制的文章就介紹到這了,更多相關Redis的LRU緩存機制內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Java手動實現Redis的LRU緩存機制
  • 淺談redis緩存在項目中的使用
  • 詳解redis緩存與數據庫一致性問題解決
  • 淺談MySQL與redis緩存的同步方案
  • 使用 Redis 緩存實現點贊和取消點贊的示例代碼
  • 詳解Redis 緩存刪除機制(源碼解析)
  • Redis 緩存實現存儲和讀取歷史搜索關鍵字的操作方法
  • SpringCache 分布式緩存的實現方法(規避redis解鎖的問題)
  • 詳解緩存穿透擊穿雪崩解決方案

標簽:臺州 江蘇 北京 朝陽 大慶 楊凌 吉安 果洛

巨人網絡通訊聲明:本文標題《手動實現Redis的LRU緩存機制示例詳解》,本文關鍵詞  手動,實現,Redis,的,LRU,緩存,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《手動實現Redis的LRU緩存機制示例詳解》相關的同類信息!
  • 本頁收集關于手動實現Redis的LRU緩存機制示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲视频一区二区在线| **欧美大码日韩| 国产亚洲欧美日韩在线一区| 免费精品99久久国产综合精品| 91丝袜美腿高跟国产极品老师 | 不卡在线视频中文字幕| 欧美精品一区男女天堂| 免费观看一级特黄欧美大片| 日韩欧美另类在线| 国产一区二区三区香蕉| 久久久久国产精品人| 国产一区二区三区免费在线观看| 欧美一激情一区二区三区| 蜜臀av一区二区| 久久蜜臀中文字幕| 国产成人免费xxxxxxxx| 综合久久久久综合| 欧美综合一区二区| 日韩电影免费在线观看网站| 日韩欧美一区二区不卡| 国产一区二区三区四| 中文字幕一区二区三区乱码在线 | 99视频一区二区| 国产精品二区一区二区aⅴ污介绍| 国产黄色成人av| 亚洲欧美日韩一区| 日韩亚洲欧美高清| 波多野结衣中文字幕一区二区三区 | 日本vs亚洲vs韩国一区三区| www国产精品av| 色琪琪一区二区三区亚洲区| 蜜臀av一区二区在线免费观看 | 国产无遮挡一区二区三区毛片日本| 99久久婷婷国产综合精品电影 | 婷婷六月综合亚洲| 国产人成一区二区三区影院| 欧美精品久久99| 北条麻妃国产九九精品视频| 五月婷婷激情综合网| 国产精品久久久久久久岛一牛影视| 欧美精选午夜久久久乱码6080| 风间由美中文字幕在线看视频国产欧美| 亚洲电影中文字幕在线观看| 国产精品伦一区二区三级视频| 91精品国产综合久久久久| 91女人视频在线观看| 国产美女精品一区二区三区| 毛片基地黄久久久久久天堂| 午夜av区久久| 午夜精品成人在线| 亚洲第一福利视频在线| 亚洲精品视频在线观看网站| 国产精品久久精品日日| 国产女主播视频一区二区| 欧美成人女星排行榜| 欧美精品v国产精品v日韩精品| 日本久久一区二区| 91在线免费视频观看| 国产69精品久久久久毛片| 九一九一国产精品| 日韩 欧美一区二区三区| 亚洲男人天堂一区| 亚洲欧洲av在线| 日本亚洲天堂网| 伊人婷婷欧美激情| 亚洲免费视频中文字幕| 欧美国产日产图区| 久久久国际精品| 日本一区二区三级电影在线观看| 日韩一区二区影院| 欧美一级久久久久久久大片| 欧美在线999| 在线观看视频一区| 91麻豆免费看| 色狠狠av一区二区三区| 国产91丝袜在线观看| 国产成人在线观看| 91玉足脚交白嫩脚丫在线播放| 国产成人免费9x9x人网站视频| 国产美女视频91| av不卡在线观看| 91免费国产视频网站| 日本韩国欧美三级| 91精品国产综合久久久久久久 | 日本一区二区三级电影在线观看| 久久久91精品国产一区二区精品 | 同产精品九九九| 黑人巨大精品欧美一区| 国产精品小仙女| 波多野结衣视频一区| 欧美日韩一区在线| 日韩欧美一区在线观看| 精品久久久久99| 亚洲美女屁股眼交3| 免费观看日韩av| 91猫先生在线| 久久久不卡影院| 图片区小说区区亚洲影院| 国产成人av福利| 欧美亚日韩国产aⅴ精品中极品| 日韩精品一区二区三区中文不卡| 中文字幕第一区第二区| 亚洲第一综合色| 国产精品影视在线观看| 日本韩国一区二区| 日韩欧美aaaaaa| 中文字幕佐山爱一区二区免费| 一区二区三区av电影| 蜜乳av一区二区| 成人黄色电影在线| 亚洲美女免费在线| 久久99精品一区二区三区 | 成人免费视频视频在线观看免费| 成人免费看的视频| 538在线一区二区精品国产| 国产精品区一区二区三| 亚洲电影一级片| 不卡av在线免费观看| 欧美α欧美αv大片| 亚洲日本中文字幕区| 久久国产福利国产秒拍| 91亚洲永久精品| 欧美日韩国产精品自在自线| 久久久久国产免费免费| 日本三级亚洲精品| 欧美私模裸体表演在线观看| 国产精品欧美一级免费| 国产剧情av麻豆香蕉精品| 6080日韩午夜伦伦午夜伦| 亚洲国产中文字幕在线视频综合| 国产精品综合二区| 精品少妇一区二区| 蜜臀av在线播放一区二区三区| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩国产乱码电影| 亚洲国产综合91精品麻豆| av亚洲精华国产精华精华| 欧美猛男gaygay网站| 亚洲免费观看高清| 91免费看片在线观看| 国产精品激情偷乱一区二区∴| 国产精品综合网| 久久亚洲欧美国产精品乐播| 久草这里只有精品视频| 精品1区2区在线观看| 国产精品一区二区三区四区| 精品国产一区二区精华| 精品一区二区av| 国产喂奶挤奶一区二区三区| 韩国欧美国产1区| 国产亚洲综合性久久久影院| 国产传媒日韩欧美成人| 中文字幕在线观看不卡| 97久久超碰精品国产| 亚洲精品国产第一综合99久久 | 岛国一区二区三区| 亚洲猫色日本管| 欧美高清性hdvideosex| 老司机精品视频线观看86| 欧美不卡一区二区| 国产乱码精品一区二区三区忘忧草| 国产精品久久久久影视| 91在线视频18| 青青草一区二区三区| 亚洲欧美国产77777| 91蜜桃免费观看视频| 亚洲高清视频的网址| 欧美一级专区免费大片| 九九九精品视频| 亚洲色图一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 波多野结衣欧美| 亚洲va韩国va欧美va精品| 欧美成人国产一区二区| aaa欧美日韩| 香蕉加勒比综合久久| 精品99久久久久久| 色婷婷激情久久| 五月天中文字幕一区二区| 91精品蜜臀在线一区尤物| 国内国产精品久久| 国产精品系列在线| 欧美在线观看一区| 国产成人免费视| 美女视频一区二区三区| ...av二区三区久久精品| 69堂成人精品免费视频| 成人av午夜影院| 日韩成人dvd| 一区二区在线看| 精品国产sm最大网站免费看| 91影院在线免费观看| 久久激五月天综合精品| 亚洲福利视频一区二区| 日韩精品一区二区三区swag| 99精品欧美一区二区蜜桃免费| 久久激情五月激情| 亚洲bdsm女犯bdsm网站| 亚洲欧美欧美一区二区三区| 国产性色一区二区|