blob: 0fe2264faf202dfd67d34026262f0a579e3260a8 [file] [log] [blame]
<?xml version="1.0"?>
<document>
<properties>
<title>JCS Plugin Overview</title>
<author email="ASmuts@therealm.com">Aaron Smuts</author>
</properties>
<body>
<section name="JCS Plugin Overview">
<p>
JCS provides multiple auxiliaries which can be plugged into a cache region, in a manner similar to adding Log4j appenders to a logger.
JCS auxiliaries are defined in the cache.ccf file. You can specify which plugins a particular cache region should use.
</p>
<p>
There are four types of auxiliaries: (1) memory, (2) disk, (3) lateral, and (4) remote. Each region is required to have one and only one memory auxiliary. No other auxiliaries are required and any possible combination of disk, lateral, and remote auxiliaries is allowed. If you
Do not want to store items in memory, then the maximum size for the memory
Caches can be set to 0 on a per region basis.
</p>
</section>
<section name="Memory Plugins">
<p>
Currently, JCS provides four memory management options: (1) LRUMemoryCache, (2) LHMLRUMemoryCache, (3) MRUMemoryCache, and (4) ARCMemoryCache. All memory caches restrict the number of items that can be stored in memory per region. If a disk cache is configured for the region, the items will be spooled to disk when the memory capacity is reached. JCS enforces configurable parameters such as time to live and maximum idle time. Expired elements can be cleaned up by the ShrinkerThread, otherwise they will be removed at the next retrieval attempt or when the capacity is reached.
</p>
<p>
The LRUMemoryCache is the currently recommended plugin. Upon misconfiguration it is used as the default. The LRUMemoryCache removes the least recently used items when the cache is full.
</p>
<p>
The ARCMemoryCache is currently experimental, but will be fully tested soon. It implements an adaptive replacement caching algorithm that combines an LRU and an LFU that adapt to usage patterns.
</p>
</section>
<section name="Disk Plugins">
<p>
JCS provides several disk swap options: indexed disk, HSQL, JISP, and Berkeley DB JE. The IndexedDiskCache is the recommended disk cache. It maintains the cached data on disk and the keys in memory for the fastest possible lookup times. Writing to disk is done asynchronously. Items are typically put in purgatory and queued for background disk writing. While in purgatory, the items remain available.
</p>
<p>
In addition, JCS provides a disk auxiliary that uses the Berkeley DB Java Edition for disk storage. JCS can effectively function as an expiration manager and distribution mechanism on top of a Berkeley DB JE.
</p>
</section>
<section name="Lateral Plugins">
<p>
JCS provides two recommended lateral distribution options: TCP socket server distribution and JGroups (or JavaGroups). There are also several other experiemental lateral distribution auxiliaries using servlets, UDP, and xmlrpc.
</p>
</section>
<section name="Remote Plugins">
<p>
JCS also provides an RMI based remote server to manage distribution of cached data.
</p>
</section>
</body>
</document>