簡體   English   中英

Laravel 4 Redis會話連接

[英]Laravel 4 Redis Session Connection


我正在嘗試使用Laravel Redis會話驅動程序,問題是-它似乎總是假設使用了“默認”連接。 有誰知道是否可以使用其他連接?

例如“會話”? 所以我所有的會話都在一台服務器上嗎?

另外,只要我在redis數組中沒有“默認”鍵,我就會到處都有異常。 我必須聲明一個“默認”連接嗎? 有我自己的名字怎么了?

例如

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

(對上述類的魔術方法調用直接進入默認連接)

獲得所需內容的一種可能方法是編寫自己的類,該類使用構造函數擴展RedisStore,該構造函數采用連接名稱並將$this->redis設置$this->redis Redis::connection($name)返回的值。 您還需要弄清楚如何獲取會話處理程序以使用自己的緩存驅動程序。 我不知道這將是多么容易或您將如何做-可能很難嘗試將其全部連接起來。

有幾種解決方法:我將概述為什么會出現錯誤以及如何以簡單的方式解決此問題(以防其他人遇到相同的問題):

  • 在供應商/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');

將Config \\ session.php中的會話驅動程序從本機更改為redis

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM