Relay
For much faster cache performance the Relay PHP extension can be used to store the cache data inside PHP’s shared memory pool. Using it with Object Cache Pro is as easy as changing the client
configuration option.
There are however a few important things to know:
- Understand the multitenancy limitations
- Using compression and igbinary helps to reduce Relay memory usage
- Experiment with prefetching and
alloptions
splitting
Multitenancy limitations
With Relay enabled, running multiple WordPress sites using a single Redis instance has some limitations, which will cause unnecessary flushing of Relay’s memory.
To bypass most of them it is vital to:
- Use a dedicated
database
for each WordPress site - As well as using a unique
prefix
for each site
Unfortunately, due to Redis’ design, Relay isn’t aware of the database index
when FLUSHDB
is called and thus will flush it’s entire memory.
If you’re curious, read the technical details.
Relay configuration
define('WP_REDIS_CONFIG', [
'token' => '...',
'host' => '127.0.0.1',
'port' => 6379,
// use `relay` extension
'client' => 'relay',
// avoid unnecessary flushing
// change `3` and `db3` for each site
'database' => 3,
'prefix' => 'db3',
// whether multiple WordPress sites use the Redis instance
'shared' => true,
// reduce memory usage
'compression' => 'zstd',
'serializer' => 'igbinary',
// experiment with these (some sites may benefit while others don't)
'prefetch' => false,
'split_alloptions' => false,
// regular configuration options
'timeout' => 0.5,
'read_timeout' => 0.5,
'retries' => 3,
'backoff' => 'smart',
// debug off (reduces memory footprint)
'debug' => false,
'save_commands' => false,
]);