Redis Cache Adapter¶
This adapter stores the values in-memory using one (or more) Redis server instances. Unlike the APCu adapter, and similarly to the Memcached adapter, it is not limited to the current server's shared memory; you can store contents independent of your PHP environment. The ability to utilize a cluster of servers to provide redundancy and/or fail-over is also available.
Caution
Requirements: At least one Redis server must be installed and running to use this
adapter. Additionally, this adapter requires a compatible extension or library that implements
\Redis
, \RedisArray
, RedisCluster
, or \Predis
.
This adapter expects a Redis, RedisArray, RedisCluster, or Predis instance to be passed as the first parameter. A namespace and default cache lifetime can optionally be passed as the second and third parameters:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | use Symfony\Component\Cache\Adapter\RedisAdapter;
$cache = new RedisAdapter(
// the object that stores a valid connection to your Redis system
\Redis $redisConnection,
// the string prefixed to the keys of the items stored in this cache
$namespace = '',
// the default lifetime (in seconds) for cache items that do not define their
// own lifetime, with a value 0 causing items to be stored indefinitely (i.e.
// until RedisAdapter::clear() is invoked or the server(s) are purged)
$defaultLifetime = 0
);
|
Configure the Connection¶
The createConnection()
helper method allows creating and configuring the Redis client class instance using a
Data Source Name (DSN):
1 2 3 4 5 6 | use Symfony\Component\Cache\Adapter\RedisAdapter;
// pass a single DSN string to register a single server with the client
$client = RedisAdapter::createConnection(
'redis://localhost'
);
|
The DSN can specify either an IP/host (and an optional port) or a socket path, as well as a user and password and a database index.
Note
A Data Source Name (DSN) for this adapter must use the following format.
1 | redis://[user:[email protected]][ip|host|socket[:port]][/db-index]
|
Below are common examples of valid DSNs showing a combination of available values:
1 2 3 4 5 6 7 8 9 10 11 12 13 | use Symfony\Component\Cache\Adapter\RedisAdapter;
// host "my.server.com" and port "6379"
RedisAdapter::createConnection('redis://my.server.com:6379');
// host "my.server.com" and port "6379" and database index "20"
RedisAdapter::createConnection('redis://my.server.com:6379/20');
// host "localhost" and SASL use "rmf" and pass "abcdef"
RedisAdapter::createConnection('redis://rmf:[email protected]');
// socket "/var/run/redis.sock" and SASL user "user1" and pass "bad-pass"
RedisAdapter::createConnection('redis://user1:[email protected]/var/run/redis.sock');
|
Configure the Options¶
The createConnection()
helper method
also accepts an array of options as its second argument. The expected format is an associative
array of key => value
pairs representing option names and their respective values:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | use Symfony\Component\Cache\Adapter\RedisAdapter;
$client = RedisAdapter::createConnection(
// provide a string dsn
'redis://localhost:6739',
// associative array of configuration options
array(
'persistent' => 0,
'persistent_id' => null,
'timeout' => 30,
'read_timeout' => 0,
'retry_interval' => 0,
)
);
|
Available Options¶
class
(type:string
)- Specifies the connection library to return, either
\Redis
or\Predis\Client
. If none is specified, it will return\Redis
if theredis
extension is available, and\Predis\Client
otherwise. persistent
(type:int
, default:0
)- Enables or disables use of persistent connections. A value of
0
disables persistent connections, and a value of1
enables them. persistent_id
(type:string|null
, default:null
)- Specifies the persistent id string to use for a persistent connection.
read_timeout
(type:int
, default:0
)- Specifies the time (in seconds) used when performing read operations on the underlying network resource before the operation times out.
retry_interval
(type:int
, default:0
)- Specifies the delay (in milliseconds) between reconnection attempts in case the client loses connection with the server.
timeout
(type:int
, default:30
)- Specifies the time (in seconds) used to connect to a Redis server before the connection attempt times out.
Note
When using the Predis library some additional Predis-specific options are available. Reference the Predis Connection Parameters documentation for more information.
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.