1


Laravel Redis セッション ドライバーを使用しようとしていますが、問題は - 「デフォルト」接続の使用を常に想定しているようです。別の接続を使用できるかどうかは誰にもわかりませんか?

例えば「セッション」?私のセッションはすべて1つのサーバー上にあるのでしょうか?

また、redis 配列に「デフォルト」キーがない場合は常に、いたるところで例外が発生します。「デフォルト」接続を宣言する必要がありますか? 自分の名前で何が悪いの?

例えば

Redis 接続

4

3 に答える 3

2

あなたが望むことをする簡単な方法があるようには見えません。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)。ただし、セッションハンドラーが独自のキャッシュドライバーを使用するようにする方法も理解する必要があります。それがどれほど簡単で、どのように行うかはわかりません。すべてを接続しようとするのは難しいかもしれません。

于 2013-08-06T06:15:42.887 に答える
1

これにはいくつかの方法があります: エラーが発生した理由と、これを簡単な方法で修正する方法を概説します (他の誰かが同じ問題を抱えている場合):

  • vendor/laravel/framework/src/illuminate/Redis/Database.php で開きます
  • クラスの先頭に接続用の $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');
于 2015-02-17T13:00:44.733 に答える
-3

Config\session.php のセッション ドライバーをネイティブから redis に変更します。

于 2013-08-05T20:40:34.933 に答える