Define the desired cache configuration. There are several cache options to choose from. The various
types of caches are explained here:
No Cache
This configuration is not recommended. Without a cache
Imago
is required to generate complete transforms for each request. A well-tuned cache can significantly
increase performance.
- cache=org.xenei.util.cache.NoCache
- Defines a cache that does nothing. It always accepts entries and never has anything cached.
Back to top
Memory Cache
Imago
is shipped with the Memory Cache enabled.
- cache=org.xenei.util.cache.memcache.MemoryCache
- Specifies the MemoryCache as the cache.
- cache.cacheclass=java.util.HashMap
-
Specifies that the cache should use the standard HashMap to store data internally. Any class that
implements java.util.Map may be used.
- cache.reaper.maxage=30
- The maximum age in minutes of a cache entry before it is considered stale and removed.
- cache.reaper.period=45
-
The period in minutes between sweeps of the cache for stale objects. This number should be larger
than the maxage parameter.
- cache.reaper.priority=1
-
The thread priority that the reaper will run with. If this is not set then the priority of the
scheduler will be used.
- cache.mem.min=1
-
The minimum free heap in MBs. This is the number of MBs required to be free when the cache is
operating. If the free memory drops below this number the cache attempts an emergency clean of
stale objects until the minimum free memory is achieved or the cache is disabled.
- cache.mem.max=4
-
This is the maximum memory used by the application. It is not possible to differentiate between
cache and non-cache items. If this limit is exceeded then an emergency clean of stale objects is
attempted.
- cache.lock.maxage=10
-
The maximum age of a cache lock in seconds. If a lock exceeds this age it is assumed to be
abandoned and may be broken.
- cache.lock.wait.count=5
-
The maximum number of times a thread should wait for a cache lock before giving up and proceeding
to rebuild the object. If this is set too low the cache will build unnecessary objects, if too high
the system will slow down waiting for locks when it could rebuild the object faster.
- cache.lock.wait.time=100
-
The number of timer ticks in milliseconds the thread should wait between attempts to get a cache
lock.
Back to top
DB Cache
The DBCache utilizes a database. This can make it easy for multiple
Imago
servers to synchronize their caches. This can be particularly useful if
Imago
is being run in a clustered environment.
- cache=org.xenei.util.cache.dbcache.DBCache
- Use the DBCache.
- cache.driver=com.mysql.jdbc.Driver
- The JDBC driver to use. This must be a driver and database supported by LDBC.
- cache.url=jdbc:mysql://db.xenei.org/imago
- The URL for the database.
- cache.user=imago
- The user ID for the database.
- cache.password=imago
- The password for the database.
- cache.reaper.period=15
-
The period in hours between sweeps of the cache for expired objects. In the DB cache an object is
expired if it has changed. The reaper reads and validates every object in the table.
- cache.reaper.priority=1
-
The thread priority the reaper will run with. If this is not set the priority of the scheduler will
be used.
- cache.lock.maxage=10
-
The maximum age of a cache lock in seconds. If a lock exceeds this age it is assumed to be
abandoned and may be broken.
- cache.lock.wait.count=5
-
The maximum number of times a thread should wait for a cache lock before giving up and proceeding
to rebuild the object. If this is set too low the cache will build unnecessary objects, if set too
high the system will slow down waiting for locks when it could rebuild the object faster.
- cache.lock.wait.time=100
-
The number of timer ticks in milliseconds the thread should wait between attempts to get a cache
lock.
Back to top
Slow Cache
The slow cache does not perform caching itself. It is used to wrap a slower caching implementation. For
example a remote database cache may be too slow for regular operation but by wrapping it in a slow
cache there is some speed improvement.
- cache=org.xenei.util.cache.slowcache.SlowCache
- Use the slow cache wrapper.
- cache.wraps=org.xenei.util.cache.dbcache.DBCache
- Define a wrapping of a database cache.
-
cache.wraps.driver=com.mysql.jdbc.Driver
cache.wraps.url=jdbc:mysql://db.xenei.org/imago
cache.wraps.user=imago
cache.wraps.password=imago
cache.wraps.reaper.period=15
cache.wraps.reaper.priority=1
cache.wraps.lock.maxage=10
cache.wraps.lock.wait.count=5
cache.wraps.lock.wait.time=100
- The DB cache options.
Back to top
Xenei Cache
The Xenei Cache is a two-level cache mechanism. This is particularly useful if you want to have a
shallow cache for frequently used objects and a deeper cache for less frequently used objects, such as
an in-memory cache backed by a database cache.
- cache=org.xenei.util.cache.xeneicache.XeneiCache
- Use the Xenei Cache.
- cache.synchronizedlocks=false
-
Synchronized locks requires that both level1 and level2 caches be locked before a lock is returned.
Otherwise the first level lock is tried and if it succeeds the second level is tried; regardless of
the result of the second level lock the lock is returned.
- cache.level1=org.xenei.util.cache.memcache.MemoryCache
- Level 1 uses the memory cache.
-
cache.level1.cacheclass=java.util.HashMap
cache.level1.reaper.maxage=30
cache.level1.reaper.period=45
cache.level1.reaper.priority=1
cache.level1.mem.min=1
cache.level1.mem.max=4
cache.level1.lock.maxage=10
cache.level1.lock.wait.count=5
cache.level1.lock.wait.time=100
- The memory cache definition.
- cache.level2=org.xenei.util.cache.slowcache.SlowCache
- Level 2 uses the slow cache wrapper.
- cache.level2.wraps=org.xenei.util.cache.dbcache.DBCache
- It is wrapping a database cache.
-
cache.level2.wraps.driver=com.mysql.jdbc.Driver
cache.level2.wraps.url=jdbc:mysql://db.xenei.org/imago
cache.level2.wraps.user=imago
cache.level2.wraps.password=imago
cache.level2.wraps.reaper.period=15
cache.level2.wraps.reaper.priority=1
cache.level2.wraps.lock.maxage=10
cache.level2.wraps.lock.wait.count=5
cache.level2.wraps.lock.wait.time=100
- The DB cache options.
Back to top
All trademarks and copyrights are the property of their respective owners.
Copyright © 2002-2004 by Xenei.com, All Rights Reserved