[英]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.