A feather weight cache implementation in Kotlin
implementation("com.sanctumlabs:cachey:1.0.0")
with gradle
<dependency>
<groupId>com.sanctumlabs</groupId>
<artifactId>cachey</artifactId>
<version>1.0.0</version>
</dependency>
with maven
Caching is a critical technology in many high performance scalable applications. There are many choices in caching framework, including (but not limited to) Memcache , cache2k etc.
LRU cache uses Least Recently Used strategy to evict the least recently used items. This keeps only a certain number of entries that are recently used and removes others.
We only keep maximumSize
entries at most. Here we leverage the class java.util.LinkedHashMap
to trace the usage of
entries, and oldestKeyToRemove
is the one to be removed, which is the eldest entry ordered by used frequency.
Method cycleKeyMap
is responsible for removing entries that are too old and less used. Simple and straightforward.
This uses a flushInterval
, and will clear the cache every flushInterval
milliseconds. It's typically a **
scheduled task**, we can use a background thread to do the task, but again, to make it simple, we just recycle
before
every operation in our cache.
Besides the three implementations above, here are several implementations such as FIFOCache
, SoftCache
and WeakCache
, implemented
with First-in-first-out algorithm
, Soft Reference,
and Weak Reference respectively.