php - 使用非零的数据库编号时,Laravel 6 redis session 不存储到 redis

标签 php laravel session redis

使用 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/

    相关文章:

    PHPExcel写Excel并保存到服务器?

    php - 显示随机问题

    php - 错误 SQLSTATE[42000] Laravel 更新

    php - SELECT 列表不在 GROUP BY 子句中并且包含非聚合列 'explore.ratings.id'

    PHP - session 变量不在页面之间保存

    asp.net-mvc - MVC - SQL session 状态与在数据库中存储值

    python - 以编程方式登录用户?

    php - 不同 mysql 服务器版本的默认值

    php - 如何使用另一个数组中的字符串作为位置名称在 PHP 中创建数组?

    laravel - 为每个帖子获取用户喜欢