Laravel 4.2中用于缓存和会话的不同redis数据库

时间:2015-10-29 13:07:51

标签: php laravel caching laravel-4 redis

我正试图远离文件缓存而是使用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和第1个数据库中共享应用程序缓存和会话时将它们保存到第1个数据库中。这是Laravel中的错误还是配置问题?

2 个答案:

答案 0 :(得分:1)

我不认为这是一个错误,但是我在Redis Class for Laravel 4.2

中看到了与Redis服务器建立连接的选项永远不会被引入
protected function createSingleClients(array $servers)
{
    $clients = array();
    foreach ($servers as $key => $server)
    {
        $clients[$key] = new Client($server);
    }
    return $clients;
}

如果将其与Redis Class for Laravel 5进行比较,则会传递每个服务器的选项,以便支持该功能。

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选项。

答案 1 :(得分:0)

连接参数与 redis 无关,如配置文件cache.php

中所述
  

使用“数据库”缓存驱动程序时,您可以指定   应该用于存储缓存项的连接。当这个   选项 null 将使用默认数据库连接   高速缓存中。