The JDBC disk cache uses a relational database such as MySQL as a persistent store. It works with Oracle, MySQL and HSQL. The cache elements are serialized and written into a BLOB. Multiple regions can share a single table. You can define multiple, differently configured JDBC disk caches in one JCS instance. This allows you to use different tables for different cache regions.
############################################################## ################## DEFAULT CACHE REGION ##################### # sets the default aux value for any non configured caches jcs.default=MYSQL,RCluster jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects=5000 jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.default.cacheattributes.UseMemoryShrinker=true jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=7200 jcs.default.cacheattributes.ShrinkerIntervalSeconds=60 jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.default.elementattributes.IsEternal=false jcs.default.elementattributes.MaxLifeSeconds=14400 jcs.default.elementattributes.IdleTime=14400 jcs.default.elementattributes.IsSpool=true jcs.default.elementattributes.IsRemote=true jcs.default.elementattributes.IsLateral=true ############################################################## ################## CACHE REGIONS AVAILABLE ################### ############################################################## ################## AUXILIARY CACHES AVAILABLE ################ # MYSQL disk cache used for flight options jcs.auxiliary.MYSQL=org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCacheFactory jcs.auxiliary.MYSQL.attributes=org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCacheAttributes jcs.auxiliary.MYSQL.attributes.userName=myUsername jcs.auxiliary.MYSQL.attributes.password=myPassword jcs.auxiliary.MYSQL.attributes.url=${MYSQL} jcs.auxiliary.MYSQL.attributes.driverClassName=org.gjt.mm.mysql.Driver jcs.auxiliary.MYSQL.attributes.tableName=JCS_STORE jcs.auxiliary.MYSQL.attributes.testBeforeInsert=false jcs.auxiliary.MYSQL.attributes.maxActive=100 jcs.auxiliary.MYSQL.attributes.MaxPurgatorySize=10000000 jcs.auxiliary.MYSQL.attributes.UseDiskShrinker=true jcs.auxiliary.MYSQL.attributes.ShrinkerIntervalSeconds=1800 jcs.auxiliary.MYSQL.attributes.allowRemoveAll=false jcs.auxiliary.MYSQL.attributes.EventQueueType=POOLED jcs.auxiliary.MYSQL.attributes.EventQueuePoolName=disk_cache_event_queue ############################################################## ################## OPTIONAL THREAD POOL CONFIGURATION ######### # Disk Cache pool thread_pool.disk_cache_event_queue.useBoundary=true thread_pool.disk_cache_event_queue.boundarySize=1000 thread_pool.disk_cache_event_queue.maximumPoolSize=50 thread_pool.disk_cache_event_queue.minimumPoolSize=10 thread_pool.disk_cache_event_queue.keepAliveTime=3500 thread_pool.disk_cache_event_queue.whenBlockedPolicy=RUN thread_pool.disk_cache_event_queue.startUpSize=10
drop TABLE JCS_STORE; CREATE TABLE JCS_STORE ( CACHE_KEY VARCHAR(250) NOT NULL, REGION VARCHAR(250) NOT NULL, ELEMENT BLOB, CREATE_TIME DATETIME, CREATE_TIME_SECONDS BIGINT, MAX_LIFE_SECONDS BIGINT, SYSTEM_EXPIRE_TIME_SECONDS BIGINT, IS_ETERNAL CHAR(1), PRIMARY KEY (CACHE_KEY, REGION) ); alter table JCS_STORE MAX_ROWS = 10000000; alter table JCS_STORE AVG_ROW_LENGTH = 2100; create index JCS_STORE_DELETE_IDX on JCS_STORE (SYSTEM_EXPIRE_TIME_SECONDS,IS_ETERNAL,REGION);