core.cache is a new Clojure contrib library providing the following features:
An underlying CacheProtocol
used as the base
abstraction for implementing new synchronous caches
A defcache
macro for hooking your
CacheProtocol
implementations into the Clojure associative
data capabilities.
Immutable implementations of some basic caching strategies
Implementation of an efficient buffer replacement policy based on the low inter-reference recency set algorithm (LIRSCache) described in the LIRS paper
Factory functions for each existing cache type
core.cache is based on a library named Clache, found at http://github.com/fogus/clache that is planned for deprecation.
You can use core.cache in your Leiningen and Cake projects with the
following :dependencies
directive in your
project.clj
file:
[org.clojure/core.cache "0.5.0"]
For Maven-driven projects, use the following slice of XML in your
pom.xml
’s <dependencies>
section:
<dependency>
<groupId>org.clojure</groupId>
<artifactId>core.cache</artifactId>
<version>0.5.0</version>
</dependency>
Enjoy!
The v0.5.0 version of core.cache is based almost wholly on the final version of Clache, with the following changes:
An addition of an evict
function on the
CacheProtocol
used to explicitly remove a value from a
cache based on a key. All of the existing cache types implement this
function except for LIRSCache
.
The addition of cache factory functions for all of the existing cache types
The associative structure behaviors are defined solely in terms
of the underlying CacheProtocol
The SoftCache
implementation was buggy and removed
for now
The following capabilities are under design, development, or consideration for future versions of core.cache:
LIRSCache evict
seed
function from the
CacheProtocol
More planning is needed around capabilities not listed nor thought of.
:F