== Connection Parameters ==
By default the object cache drop-in will connect to Redis over TCP at `127.0.0.1:6379` 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: `127.0.0.1`)
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_)
* `WP_REDIS_DISABLE_BANNERS` (default: _not set_)
== Replication & Clustering ==
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', [
'tcp://127.0.0.1:6379?database=5&alias=master',
'tcp://127.0.0.2:6379?database=5&alias=slave-01',
] );
__Replication (Redis Sentinel):__
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SENTINEL', 'mymaster' );
define( 'WP_REDIS_SERVERS', [
'tcp://127.0.0.1:5380',
'tcp://127.0.0.2:5381',
'tcp://127.0.0.3:5382',
] );
__Sharding:__
define( 'WP_REDIS_SHARDS', [
'tcp://127.0.0.1:6379?database=10&alias=shard-01',
'tcp://127.0.0.2:6379?database=10&alias=shard-02',
'tcp://127.0.0.3:6379?database=10&alias=shard-03',
] );
__Clustering (Redis 3.0+):__
define( 'WP_REDIS_CLUSTER', [
'tcp://127.0.0.1:6379?database=15&alias=node-01',
'tcp://127.0.0.2:6379?database=15&alias=node-02',
] );
== 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.7 =
- Added support for PhpRedis TLS connections
- Added support for timeout, read timeout and password when using PhpRedis cluster
- Fixed issue with `INFO` command
- Fixed object cloning when setting cache keys
= 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.
* 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 `WP_REDIS_SELECTIVE_FLUSH`
* 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 `WP_REDIS_GLOBAL_GROUPS` and `WP_REDIS_IGNORED_GROUPS` constant
* 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.