Laravel Redis セッション ドライバーを使用しようとしていますが、問題は - 「デフォルト」接続の使用を常に想定しているようです。別の接続を使用できるかどうかは誰にもわかりませんか?
例えば「セッション」?私のセッションはすべて1つのサーバー上にあるのでしょうか?
また、redis 配列に「デフォルト」キーがない場合は常に、いたるところで例外が発生します。「デフォルト」接続を宣言する必要がありますか? 自分の名前で何が悪いの?
例えば
あなたが望むことをする簡単な方法があるようには見えません。Redis ベースのセッション ドライバーは、Redis ベースのキャッシュ ドライバーを使用します。
http://laravel.com/api/source-class-Illuminate.Cache.RedisStore.html#5-155
残念ながら、使用する接続を指定する方法はありません。デフォルトの接続を使用するだけです。
http://laravel.com/api/source-class-Illuminate.Redis.Database.html#3-96
(上記のクラスへのマジック メソッド呼び出しは、既定の接続に直接行きます)
$this->redis
必要なものを取得するための可能な方法は、接続名を受け取り、返されるものに設定するコンストラクターで RedisStore を拡張する独自のクラスを作成することですRedis::connection($name)
。ただし、セッションハンドラーが独自のキャッシュドライバーを使用するようにする方法も理解する必要があります。それがどれほど簡単で、どのように行うかはわかりません。すべてを接続しようとするのは難しいかもしれません。
これにはいくつかの方法があります: エラーが発生した理由と、これを簡単な方法で修正する方法を概説します (他の誰かが同じ問題を抱えている場合):
クラスの先頭に接続用の $name 変数を作成します
クラス データベース {
/**
* The host address of the database.
*
* @var array
*/
protected $clients;
protected $name;
接続関数を変更して、独自の「デフォルト」フォールバックを期待し、現在の接続の「名前を設定」します。
コマンド メソッドでは、デフォルトの接続名ではなく、'新しい接続名' ($this->name) を指定する必要があります。
それでおしまい!
アプリケーションのどこからでも、次のように「Redis」ファサードを使用して接続にアクセスできます。
REDIS::CONNECTION('small');
REDIS::CONNECTION('large');
REDIS::CONNECTION('session');
REDIS::CONNECTION('etc');
Config\session.php のセッション ドライバーをネイティブから redis に変更します。