快取的實現方式

2021-09-02 02:26:20 字數 836 閱讀 7959

1.hashmap + reentrantreadwritelock

寫時加writelock,讀時加readlock,定時更新hashmap,適用於讀取量大寫入量小的場景。

2.linkedhashmap,實現乙個lru快取

繼承linkedhashmap,重寫removeeldestentry()方法,並做外部同步,比如ehcache的實現。

3.concurrenthashmap,實現乙個fifo的快取

快取實體可以用乙個類似concurrenthashmap中hashentry的結構,加上 volatile long livetime表示快取時間

static final class cacheentry implements serializable 

static final cacheentry newarray(int i)

}

在每次put操作的時候,把快取的key鏈結成乙個單向鍊錶,如果該段快取大於該段最大物件個數了,則從map中刪除該煉表頭結點的key值,這樣就實現了fifo淘汰策略。

private keylinked head; //頭結點

public keylinked current; //當前節點

public final class keylinked implements serializable

在初始化這個類似concurrenthashmap的快取的時候,開啟乙個執行緒,每隔1個小時清除過期的元素,只要每段中有乙個元素過期,那麼就清空該段,鍊錶隨之清空;如果某段的所有元素都不過期,則不清空,並重建

keylinked單向鍊錶。

Spring AOP 註解的方式實現快取的獲取

在學習spring aop 註解的方式實現快取的獲取,你需要掌握幾個知識點 1 為什麼要用aop 註解的方式實現快取的獲取 2 你需要了解spring框架的搭建 3 你需要了解spring如何做到獲取方法引數的引數名 4 你需要了解反射的概念 5 你需要了解註解的基本知識 以上所列的2 4 5條都可...

Django快取方式

1 全站快取 在setting.py中新增中介軟體 middleware django.middleware.cache.updatecachemiddleware 必須放在第乙個 django.middleware.security.securitymiddleware django.contri...

python實現快取 Python實現快取

注意 本文是乙個存根。稍會將發布有關不同的簡單快取實現的更詳細分析。請參閱下面的註解獲得大致的摘要。簡單快取實現 用法 注意,該實現使用普通列表來跟蹤訪問順序,以便能夠在快取填滿時丟棄最近最少使用的專案。列表型別沒有真正為此目的而優化,但是這種方法對於較小的快取非常有效,特別是當快取訪問遵循80 2...