Redis Object Cache Plugin

Price: FREE
Sold By:

Contributors: tillkruess
Donate link:
Tags: redis, predis, phpredis, hhvm, pecl, caching, cache, object cache, performance, replication, clustering
Requires at least: 3.3
Tested up to: 5.3
Requires PHP: 5.4
Stable tag: 1.5.6
License: GPLv3
License URI:

A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, HHVM, replication, clustering and WP-CLI.

== Description ==

A persistent object cache backend powered by Redis. Supports [Predis](, [PhpRedis (PECL)](, [HHVM](, replication, clustering and [WP-CLI](

To adjust the connection parameters, prefix cache keys or configure replication/clustering, please see [Other Notes](

Forked from Eric Mann's and Erick Hitter's [Redis Object Cache](

= Redis Cache Pro =

A **business class** Redis object cache backend. Truly reliable, highly optimized, fully customizable and with a dedicated engineer when you most need it.

* Rewritten for raw performance
* WordPress object cache API compliant
* Easy debugging & logging
* Cache analytics and preloading
* Fully unit tested (100% code coverage)
* Secure connections with TLS
* Health checks via WordPress, WP CLI & Debug Bar
* Optimized for WooCommerce, Jetpack & Yoast SEO

Learn more about [Redis Cache Pro](

== Installation ==

For detailed installation instructions, please read the [standard installation procedure for WordPress plugins](

1. Make sure [Redis is installed and running](
2. Install and activate plugin.
3. Enable the object cache under _Settings -> Redis_, or in Multisite setups under _Network Admin -> Settings -> Redis_.
4. If necessary, adjust [connection parameters](

If your server doesn't support the [WordPress Filesystem API](, you have to manually copy the `object-cache.php` file from the `/plugins/redis-cache/includes/` directory to the `/wp-content/` directory.

== Connection Parameters ==

By default the object cache drop-in will connect to Redis over TCP at `` and select database `0`.

To adjust the connection parameters, define any of the following constants in your `wp-config.php` file.

* `WP_REDIS_CLIENT` (default: _not set_)

Specifies the client used to communicate with Redis. Supports `hhvm`, `pecl` and `predis`.

* `WP_REDIS_SCHEME` (default: `tcp`)

Specifies the protocol used to communicate with an instance of Redis. Internally the client uses the connection class associated to the specified connection scheme. Supports `tcp` (TCP/IP), `unix` (UNIX domain sockets), `tls` (transport layer security) or `http` (HTTP protocol through Webdis).

* `WP_REDIS_HOST` (default: ``)

IP or hostname of the target server. This is ignored when connecting to Redis using UNIX domain sockets.

* `WP_REDIS_PORT` (default: `6379`)

TCP/IP port of the target server. This is ignored when connecting to Redis using UNIX domain sockets.

* `WP_REDIS_PATH` (default: _not set_)

Path of the UNIX domain socket file used when connecting to Redis using UNIX domain sockets.

* `WP_REDIS_DATABASE` (default: `0`)

Accepts a numeric value that is used to automatically select a logical database with the `SELECT` command.

* `WP_REDIS_PASSWORD` (default: _not set_)

Accepts a value used to authenticate with a Redis server protected by password with the `AUTH` command.

* `WP_REDIS_TIMEOUT` (default: `5`)

Amount of time in seconds (fractions of a second allowed) to attempt initial connection to Redis server before failing.

* `WP_REDIS_READ_TIMEOUT` (default: `5`)

Amount of time in seconds (fractions of a second allowed) to attempt a read from the Redis server before failing.

* `WP_REDIS_RETRY_INTERVAL` (default: _not set_)

Amount of time in milliseconds to retry a failed connection attempt.

== Configuration Parameters ==

To adjust the configuration, define any of the following constants in your `wp-config.php` file.

* `WP_CACHE_KEY_SALT` (default: _not set_)

Set the prefix for all cache keys. Useful in setups where multiple installs share a common `wp-config.php` or `$table_prefix` to guarantee uniqueness of cache keys.

* `WP_REDIS_SELECTIVE_FLUSH` (default: _not set_)

If set to `true`, flushing the cache will only delete keys that are prefixed with `WP_CACHE_KEY_SALT` (instead of emptying the entire Redis database). The selective flush is an atomic `O(n)` operation.

* `WP_REDIS_MAXTTL` (default: _not set_)

Set maximum time-to-live (in seconds) for cache keys with an expiration time of `0`.

* `WP_REDIS_GLOBAL_GROUPS` (default: `['blog-details', 'blog-id-cache', 'blog-lookup', 'global-posts', 'networks', 'rss', 'sites', 'site-details', 'site-lookup', 'site-options', 'site-transient', 'users', 'useremail', 'userlogins', 'usermeta', 'user_meta', 'userslugs']`)

Set the list of network-wide cache groups that should not be prefixed with the blog-id _(Multisite only)_.

* `WP_REDIS_IGNORED_GROUPS` (default: `['counts', 'plugins']`)

Set the cache groups that should not be cached in Redis.

* `WP_REDIS_UNFLUSHABLE_GROUPS` (default: _not set_)

Set groups not being flushed during a selective cache flush.

* `WP_REDIS_DISABLED` (default: _not set_)

Set to `true` to disable the object cache at runtime.

* `WP_REDIS_GRACEFUL` (default: _not set_)

Set to `false` to disable graceful failures and throw exceptions.

* `WP_REDIS_SERIALIZER` (default: _not set_)

Use PhpRedis’ built-in serializers. Supported values are `Redis::SERIALIZER_PHP` and `Redis::SERIALIZER_IGBINARY`.

* `WP_REDIS_IGBINARY` (default: _not set_)

Set to `true` to enable the [igbinary]( serializer. Ignored when `WP_REDIS_SERIALIZER` is set.

* `WP_REDIS_DISABLE_BANNERS` (default: _not set_)

Set to `true` to disable promotions for [Redis Cache Pro](

== Replication & Clustering ==

To use Replication, Sharding or Clustering, make sure your server is running PHP7 or higher (HHVM is not supported) and you consulted the [Predis]( or [PhpRedis]( documentation.

For replication use the `WP_REDIS_SERVERS` constant, for sharding the `WP_REDIS_SHARDS` constant and for clustering the `WP_REDIS_CLUSTER` constant.

For authentication use the `WP_REDIS_PASSWORD` constant.

__Replication (Master-Slave):__

define( 'WP_REDIS_SERVERS', [
] );

__Replication (Redis Sentinel):__

define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SENTINEL', 'mymaster' );
define( 'WP_REDIS_SERVERS', [
] );


define( 'WP_REDIS_SHARDS', [
] );

__Clustering (Redis 3.0+):__

define( 'WP_REDIS_CLUSTER', [
] );

== WP-CLI Commands ==

To use the WP-CLI commands, make sure the plugin is activated:

wp plugin activate redis-cache

The following commands are supported:

* `wp redis status`

Show the Redis object cache status and (when possible) client.

* `wp redis enable`

Enables the Redis object cache. Default behavior is to create the object cache drop-in, unless an unknown object cache drop-in is present.

* `wp redis disable`

Disables the Redis object cache. Default behavior is to delete the object cache drop-in, unless an unknown object cache drop-in is present.

* `wp redis update-dropin`

Updates the Redis object cache drop-in. Default behavior is to overwrite any existing object cache drop-in.

== Screenshots ==

1. Plugin settings, connected to a single Redis server.

2. Plugin settings, not connected to a Redis cluster.

== Changelog ==

= 1.5.6 =

- Added object cloning to in-memory cache
- Fixed PHP notice related to `read_timeout` parameter

= 1.5.5 =

Please flush the object cache after updating the drop to v1.5.5 to avoid dead keys filling up Redis memory.

* Removed lowercasing keys
* Remove scheduled metrics event
* Fixed Redis version call when using replication

= 1.5.4 =

* Removed metrics

= 1.5.3 =

* Fixed: Call to undefined function `get_plugin_data()`
* Fixed: Call to undefined method `WP_Object_Cache::redis_version()`

= 1.5.2 =

* Added Redis version to diagnostics
* Added `WP_REDIS_DISABLE_BANNERS` constant to disable promotions
* Fixed an issue with `redis.replicate_commands()`

= 1.5.1 =

This plugin turned 5 years today (Nov 14th) and its only fitting to release the business edition today as well.
[Redis Cache Pro]( is a truly reliable, highly optimized and easy to debug rewrite of this plugin for SMBs.

* Added execution times to actions
* Added `WP_REDIS_VERSION` constant
* Fixed PhpRedis v3 compatibility
* Fixed an issue with selective flushing
* Fixed an issue with `mb_*` functions not existing
* Replaced Email Address Encoder card with Redis Cache Pro card
* Gather version metrics for better decision making

= 1.5.0 =

Since Predis isn't maintained any longer, it's highly recommended to switch over to PhpRedis (the Redis PECL extention).

* Improved Redis key name builder
* Added support for PhpRedis serializers
* Added `redis_object_cache_error` action
* Added timeout, read-timeout and retry configuration
* Added unflushable groups (defaults to `['userlogins']`)
* Fixed passwords not showing in server list

= 1.4.3 =

* Require PHP 5.4 or newer
* Use pretty print in diagnostics
* Throw exception if Redis library is missing
* Fixed cache not flushing for some users
* Fixed admin issues when `WP_REDIS_DISABLED` is `false`

= 1.4.2 =

* Added graceful Redis failures and `WP_REDIS_GRACEFUL` constant
* Improved cluster support
* Added `redis_cache_expiration` filter
* Renamed `redis_object_cache_get` filter to `redis_object_cache_get_value`

= 1.4.1 =

* Fixed potential fatal error related to `wp_suspend_cache_addition()`

= 1.4.0 =

* Added support for igbinary
* Added support for `wp_suspend_cache_addition()`

= 1.3.9 =

* Fixed `WP_REDIS_SHARDS` not showing up in server list
* Fixed `WP_REDIS_SHARDS` not working when using PECL extension
* Removed `WP_REDIS_SCHEME` and `WP_REDIS_PATH` leftovers

= 1.3.8 =

* Switched from single file Predis version to full library

= 1.3.7 =

* Revert back to single file Predis version

= 1.3.6 =

* Added support for Redis Sentinel
* Added support for sharing
* Switched to PHAR version of Predis
* Improved diagnostics
* Added `$fail_gracefully` parameter to `WP_Object_Cache::__construct()`
* Always enforce `WP_REDIS_MAXTTL`
* Pass `$selective` and `$salt` to `redis_object_cache_flush` action
* Don’t set `WP_CACHE_KEY_SALT` constant

= 1.3.5 =

* Added basic diagnostics to admin interface
* Added `WP_REDIS_DISABLED` constant to disable cache at runtime
* Prevent "Invalid plugin header" error
* Return integer from `increment()` and `decrement()` methods
* Prevent object cache from being instantiated more than once
* Always separate cache key `prefix` and `group` by semicolon
* Improved performance of `build_key()`
* Only apply `redis_object_cache_get` filter if callbacks have been registered
* Fixed `add_or_replace()` to only set cache key if it doesn't exist
* Added `redis_object_cache_flush` action
* Added `redis_object_cache_enable` action
* Added `redis_object_cache_disable` action
* Added `redis_object_cache_update_dropin` action

= 1.3.4 =

* Added WP-CLI support
* Show host and port unless scheme is unix
* Updated default global and ignored groups
* Do a cache flush when activating, deactivating and uninstalling

= 1.3.3 =

* Updated Predis to `v1.1.1`
* Added `redis_instance()` method
* Added `incr()` method alias for Batcache compatibility
* Added `redis_object_cache_delete` action
* Use `WP_PLUGIN_DIR` with `WP_CONTENT_DIR` as fallback
* Set password when using a cluster or replication
* Show Redis client in `stats()`
* Change visibility of `$cache` to public
* Use old array syntax, just in case

= 1.3.2 =

* Make sure `$result` is not `false` in `WP_Object_Cache::get()`

= 1.3.1 =

* Fixed connection issue

= 1.3 =

* New admin interface
* Added support for `wp_cache_get()`'s `$force` and `$found` parameter
* Added support for clustering and replication with Predis

= 1.2.3 =

* UI improvements

= 1.2.2 =

* Added `redis_object_cache_set` action
* Added `redis_object_cache_get` action and filter
* Prevented duplicated admin status messages
* Load bundled Predis library only if necessary
* Load bundled Predis library using `WP_CONTENT_DIR` constant
* Updated `stats()` method output to be uniform with WordPress

= 1.2.1 =

* Added `composer.json`
* Added deactivation and uninstall hooks to delete `object-cache.php`
* Added local serialization functions for better `advanced-cache.php` support
* Updated bundled Predis version to `1.0.3`
* Updated heading structure to be semantic

= 1.2 =

* Added Multisite support
* Moved admin menu under _Settings_ menu
* Fixed PHP notice in `get_redis_client_name()`

= 1.1.1 =

* Call `select()` and optionally `auth()` if HHVM extension is used

= 1.1 =

* Added support for HHVM's Redis extension
* Added support for PECL Redis extension
* Added `WP_REDIS_CLIENT` constant, to set preferred Redis client
* Added `WP_REDIS_MAXTTL` constant, to force expiration of cache keys
* Improved `add_or_replace()`, `get()`, `set()` and `delete()` methods
* Improved admin screen styles
* Removed all internationalization/localization from drop-in

= 1.0.2 =

* Added "Flush Cache" button
* Added support for UNIX domain sockets
* Improved cache object retrieval performance significantly
* Updated bundled Predis library to version `1.0.1`

= 1.0.1 =

* Load plugin translations
* Hide global admin notices from non-admin users
* Prevent direct file access to `redis-cache.php` and `admin-page.php`
* Colorize "Disable Object Cache" button
* Call `Predis\Client->connect()` to avoid potential uncaught `Predis\Connection\ConnectionException`

= 1.0 =

* Initial release

== Upgrade Notice ==

= 1.4.2 =

This update renames the `redis_object_cache_get` filter to avoid conflicts. Update your code if necessary.

= 1.4.0 =

This update adds support for igbinary and `wp_suspend_cache_addition()`.

= 1.3.9 =

This update contains fixes for sharding.

= 1.3.8 =

This update contains a critical fix for Predis.

= 1.3.7 =

This update fixes an issue with Predis in some environments.

= 1.3.6 =

This update contains various improvements.

= 1.3.5 =

This update contains various changes, including performance improvements and better Batcache compatibility.

= 1.3.4 =

This update contains several improvements, including WP CLI and WordPress 4.6 support.

= 1.3.3 =

This update contains several improvements.

= 1.3.2 =

This update includes a critical fix for PhpRedis.

= 1.3.1 =

This update includes a critical connection issue fix.

= 1.3 =

This update includes a new admin interface and support for clustering and replication with Predis.

= 1.2.3 =

This updated includes several UI improvements.

= 1.2.2 =

This updated includes several bug fixes and improvements.

= 1.2.1 =

This update includes several improvements and compatibility fixes.

= 1.1.1 =

This update fixes critical bugs with the HHVM extension

= 1.1 =

This update includes bug fixes and adds supports for HHVM/PECL Redis extensions.

= 1.0.2 =

This update includes significant speed improvements and support for UNIX domain sockets.

= 1.0.1 =

This update includes several security, user interface and general code improvements.

Redis Object Cache Plugin
Price: FREE

A persistent object cache backend powered by Redis.

View Cart