Integration of Drupal with the Redis key-value store. It provides cache and lock optional backends as well as a placeholder module for contribution modules Redis easier usage.

This module already provides two alternative Redis clients.

Provided backends

Predis

Redis cache backend using the good Predis PHP library.

Requires PHP 5.3.
Please read README.Predis.txt file for full install documentation.

This module works with both 7.x and 8.x main branches of the Predis library. Please report any compatibility issue.

PhpRedis

Redis cache backend using the well performing PhpRedis PHP extension.

For this one, you will probably need to compile the PHP extension yourself.
Please read README.PhpRedis.txt file for configuration and documentation.

This module was not intensively tested with PhpRedis, but it seems to be working with all PhpRedis versions.

Failover, sharding and partionning

There are numerous support and feature request issues about client sharding, failover ability, multi-server connection, ability to read from slave and server clustering opened in the issue queue. Note that there is no one universally efficient solution for this: most of the solutions require that you cannot use the MULTI/EXEC command using more than one key, and that you cannot use complex UNION and intersection features anymore.

Until this module grows with (a) mature and stable solution(s) we recommend that you read the official Redis documentation page about partionning.

The best solution for clustering and sharding today seems to be the proxy assisted partionning using tools such as Twemproxy.

Those issues for supporting client side partionning will probably take monthes before something come up in the stable version; Please be patient, there is no easy way to implement, especially while supporting both Predis and PhpRedis libraries. They both give us different set of features: while Predis with a bit of hacking can give you client side sharding, PhpRedis does not seem to bit such of a help in this field (it's a long time I read the PhpRedis document so please correct me if I'm wrong).

Additional information

  • Enabling the module serve no purpose except if another module is depending on it. If you enabled update status module, please enable it for update information, it will also provide usage statistics
  • You can tune Redis for cache handling, see http://redis.io/topics/config below section

Drupal 6 users

The provided cache backends works as-is when using Drupal 6 with the Cache Backport module.

Credits

Development

Makina Corpus | Contact us

Community

Great thanks to Irakli that granted me the commit access over this project.
Thanks to msonnabaum for the interest he shows for this modules and his numerous patches, and for his reactivity in finding critical bugs.
Thanks to David Strauss for patches.
Thanks to jtsnow for the smart design suggestions and patches.
Thanks to das-peter for a very peculiar bug fix, I would never have found this one.
Thanks to Berdir and Dave Reid for finding out that core tests were failing with this module.
Thanks to caiosba and Island Usurper for working out of the excessive cache clear problems.
Thanks to greggles for pushing this module to stable.
Thanks to omega8cc for his detailed important bug reports.
The greatest thanks of all time to mja along with omega8cc for solving the deadlock problem. The later for working literally hours to find the source, the former for fixing it.

Over the life of this module, this list can grow very long. Want to be quoted here? Open an issue!

Project Information

Downloads