MyBatis Memcached integration - Reference Documentation

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering..

The Memcached integration is built on top of the spymemcached client, written by Dustin Sallings.

Users that want to use Memcached into their applications, have to download the zip bundle, decompress it and add the jars in the classpath; Apache Maven users instead can simply add in the pom.xml the following dependency:

<dependencies>
  ...
  <dependency>
    <groupId>org.mybatis.caches</groupId>
    <artifactId>mybatis-memcached</artifactId>
    <version>1.1.0</version>
  </dependency>
  ...
</dependencies>

then, just configure it in the mapper XML

<mapper namespace="org.acme.FooMapper">
  <cache type="org.mybatis.caches.memcached.MemcachedCache" />
  ...
</mapper>

The Memcached cache is configurable by putting the /memcached.properties classpath resource; if not found, the client will use the default setting.

The following table resumes the supported configurations params; each parameter is optional, if not found in the configuration, the client will use the default value:

Property Default Description
org.mybatis.caches.memcached.keyprefix _mybatis_ any string identifier
org.mybatis.caches.memcached.servers localhost:11211 space separated list of ${host}:${port}
org.mybatis.caches.memcached.connectionfactory net.spy.memcached.DefaultConnectionFactory Any class that implements net.spy.memcached.ConnectionFactory
org.mybatis.caches.memcached.expiration the number of seconds in 30 days the expiration time (in seconds)
org.mybatis.caches.memcached.asyncget false flag to enable/disable the async get
org.mybatis.caches.memcached.timeout 5 the timeout when using async get
org.mybatis.caches.memcached.timeoutunit java.util.concurrent.TimeUnit.SECONDS the timeout unit when using async get
org.mybatis.caches.memcached.compression false if true, objects will be GZIP compressed before putting them to Memcached

If users need to log cache operations, they can plug the Cache logging version:

<mapper namespace="org.acme.FooMapper">
  <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
  ...
</mapper>