我正试图离开文件缓存,转而使用redis。我可以使用相同的redis数据库进行缓存和会话,但这意味着我无法在不丢失所有会话的情况下清除应用程序缓存,因此我希望在同一服务器上的不同数据库上运行这两个数据库。我的配置如下:
database.php
'redis' => array(
'cluster' => false,
'default' => array('host' => 'redisserverip', 'port' => 6379, 'database' => 0),
'session' => array('host' => 'redisserverip', 'port' => 6379, 'database' => 1),
),
cache.php
'driver' => 'redis',
'connection' => null,
session.php
'driver' => 'redis',
'connection' => 'session',
这是不起作用的,因为应用程序缓存和会话都被保存到第一个数据库中,而应该在第0个和第一个数据库之间共享。这是Laravel中的错误还是我的配置有问题?
我不认为这是一个错误,但从未引入连接到Redis服务器的选项,正如我在Laravel 4.2 的Redis class中看到的那样
protected function createSingleClients(array $servers)
{
$clients = array();
foreach ($servers as $key => $server)
{
$clients[$key] = new Client($server);
}
return $clients;
}
如果将其与Laravel 5的Redis Class进行比较,则会传递每个服务器的选项,从而支持该功能。
protected function createSingleClients(array $servers)
{
$clients = array();
$options = $this->getClientOptions($servers);
foreach ($servers as $key => $server)
{
$clients[$key] = new Client($server, $options);
}
return $clients;
}
我考虑到,在您的示例中,您正在寻找No cluster
选项。
连接参数与redis无关,如配置文件cache.php 中所述
使用"数据库"缓存驱动程序时,您可以指定应用于存储缓存项的连接。当选项为null将使用默认数据库连接隐藏物