'relay', ]); /** @var Predis\Connection\RelayConnection $relay */ $relay = $client->getConnection(); // establish connection $client->ping(); // register `FLUSH*` callback $relay->onFlushed( static function (Relay\Event $event) use (&$key) { echo 'Redis was flushed, unsetting $key...' . PHP_EOL; $key = null; } ); // register `INVALIDATE` callback $relay->onInvalidated( static function (Relay\Event $event) use (&$key) { if ($event->key === 'library') { echo "The `{$event->key}` key was invalidated, unsetting \$key..." . PHP_EOL; $key = null; } } ); // Write key to Redis $client->set('library', mt_rand()); // Retrieve key once from Redis, then cached in Relay and $key $key = $client->get('library'); while (true) { echo '$key is: ' . var_export($key, true) . PHP_EOL; // To trigger our event callbacks, we need to either interact with Relay: $client->get(mt_rand()); // ... or alternatively dispatch events directly on Relay: $relay->dispatchEvents(); sleep(1); }