[英]Laravel 4 Redis Session Connection
我正在嘗試使用Laravel 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)
返回的值。 您還需要弄清楚如何獲取會話處理程序以使用自己的緩存驅動程序。 我不知道這將是多么容易或您將如何做-可能很難嘗試將其全部連接起來。
有幾種解決方法:我將概述為什么會出現錯誤以及如何以簡單的方式解決此問題(以防其他人遇到相同的問題):
在類的頂部為您的連接創建一個$ 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.