Redis Cache Layer

Redis Cache Layer

Updated November 12, 2014
Author dotCMS (dotCMS)
Version 1.0
Compatible [3.0, 3.0se, 3.0ee, 3.0ep]
Description This plugin overrides the internal dotcms caching infrastructure (Guava) and replaces it with Redis, an external caching server that can be independently networked and scaled.

The plugin can be downloaded on github.com:

https://github.com/dotCMS/plugin-dotcms-redis

dotCMS & Redis

This static (not osgi) plugin will override the internal dotcms caching infrastructure (Guava) and replace it with redis, an external caching mechanism. This plugin is provided "as is" and any implementation of it should go through extensive testing before using it in a production environment.

Benefits

The benefits of redis are multiple:

  • the caching infrastructure becomes a networked server (or cluster) itself
  • the caching server can be scaled independently and at runtime in order to add/remove cache capacity.
  • Removes Dotcms cache from the java heap, which should lower Dotcms memory requirement and speed up GC significantly.
  • Cache "puts" and "removes" are network-wide - there is no external syncing mechanism that can fail.
  • Dotcms servers can be restarted with their caches fully loaded, which can be a boon for large implementations.
  • Amazon offers a cloud based redis infrastructure called Amazon ElastiCache that can scale your cache in the cloud

About Redis

Redis needs to be configured externally to dotcms and there is a lot to learn in running a Redis server. For more information, see: http://Redis.io

Configuring

You point to a redis server/port by using the dotmarketing-config.properties

Hopefully, the config is self documenting.

Master / Slave support

You can specify different servers to read from and to write to. This allows you to set up Redis in a master / slave configuration and write to the master and read from a slave.

Testing

To test, fire up a redis server locally, on port 6379 (should be the default):

redis-server

Library

The library used in this implementation is called Jedis. Jedis uses a configurable pool of connections to access the Redis server.

Plugins are feature additions outside of the dotCMS core code and unless explicitly stated otherwise, are not covered under the enterprise warranty. However, support for plugins is available through our professional services department. Contact us for more information.