簡體   English   中英

使用零以外的數據庫編號時,Laravel 6 redis 會話不存儲到 redis

[英]Laravel 6 redis session not storing to redis when using database number other than zero

使用 Laravel 6.8、php7.4。 我正在使用 redis 會話,在 database.php 中它看起來像這樣:

'session' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],

然后在 .env 中:

REDIS_DB=0

使用此設置似乎一切正常,我可以看到會話存儲在 redis 中並且它匹配\\Session::getId() 問題是當我將 .env 中的 REDIS_DB 參數更新為其他內容時,例如REDIS_DB=1 ,redis 中沒有存儲會話,即我可以使用\\Session::getId()獲取會話 ID,但是當我執行print_r(Redis::keys('*')時它不存在print_r(Redis::keys('*')
任何幫助或提示將不勝感激。

默認的 redis 和 session 可能使用不同的 redis,甚至在同一個 redis 中也可能使用不同的數據庫。 當您將數據庫1設置為會話連接時,它將始終從數據庫1讀取、寫入。 但是由於您的 redis 的default數據庫連接設置為0 ,您無法通過調用Redis::keys('*')來獲取會話密鑰,因為數據位於兩個不同的數據庫中。

有兩種方法可以解決;

  • 查詢時設置為數據庫名稱;
Redis::select(1);
return Redis::keys('*');
  • 通過將REDIS_DB設置為1來更新默認 redis 配置。

暫無
暫無

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

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