2015-10-29 25 views
1

我正嘗試從文件緩存中移開並使用redis代替。我可以使用相同的redis數據庫進行緩存和會話,但這意味着我無法清除應用程序緩存而不會丟失所有會話,所以我想要在同一臺服務器上的不同數據庫上運行這兩個數據庫。我CONFIGS如下:Laravel 4.2中用於緩存和會話的不同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', 

這不是工作既是應用程序緩存和會話被保存到數據庫1時,應該翻過0級和1數據庫共享。這是Laravel中的錯誤還是我的配置有問題?

回答

1

我不認爲它是一個錯誤,但絕不會在被介紹製作到Redis的服務器的連接選項,我可以在Redis Class for Laravel 4.2

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選項。

+0

你是否建議我是否將cluster更改爲true我可能能夠實現我想要做的事情? – Alex

+0

不,我只是指出我所展示的這些方法是連接到單個服務器。 – Rabea

+0

建議更新框架http://laravel.com/docs/5.1/upgrade#upgrade-5.1.0 – Rabea

0

連接參數無關與Redis的,在配置文件中指出cache.php

當使用「數據庫」高速緩存驅動器,你可以指定 連接應該是用於存儲緩存的項目。當這個 選項是null默認數據庫連接將用於 緩存。

+0

在session.php中,您可以指定redis連接的名稱。 「」當使用「數據庫」或「redis」會話驅動程序時,您可以指定一個應該用來管理這些會話的連接。「」 – Alex

+0

true,但是在redis中,您不能指定連接的名稱,請檢查會話評論https://github.com/laravel/laravel/blob/v4.2.11/app/config/session.php#L50 – zaherg