使用 laravel 6.8、php7.4。我正在使用 redis session ,在 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 ,它匹配 \Session::getId()
.问题是当我将 .env 中的 REDIS_DB 参数更新为其他内容时,例如 REDIS_DB=1
,redis中没有存储 session ,即我可以使用\Session::getId()
获取 session ID但是当我做 print_r(Redis::keys('*')
时它不存在任何帮助或提示将不胜感激。
最佳答案
默认 redis 和 session 可能使用不同的 redis,或者即使在同一个 redis 中也可能使用不同的数据库。当你设置数据库 1
到 session 连接,它总是从数据库中读取、写入 1
.但是由于你的redis的default
数据库连接设置为 0
,您无法通过调用 Redis::keys('*')
来获取 session key 因为数据在两个不同的数据库中。
有两种方法可以解决它;
Redis::select(1);
return Redis::keys('*');
REDIS_DB
更新默认的 redis 配置至1
. 关于php - 使用非零的数据库编号时,Laravel 6 redis session 不存储到 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64693458/