1

我很困惑为什么它是根据文档为会话创建数据库表的先决条件,而会话可以在没有它的情况下工作(数据库表)。

谁能给我解释一下

  1. 我可以直接session(['key' => 'value']);不用表,为什么我们需要为会话创建一个数据库表(基于文档)?
  2. 有一种东西叫Redis。什么目的?以及如何使用(我已经安装)?

  3. user_id, ip_address, user_agent, payload,等字段的用途是什么last_activity?这些如何有用?

4

4 回答 4

2

数据库和redis只是用于存储会话的驱动程序。默认情况下,laravel 使用file驱动程序,这意味着您仍然可以使用session(['key' => 'value']);并将存储在文件中。

如果你选择使用数据库,那么你需要创建 Laravel 用来存储这些值的表。

Redis 也是一个完全独立的驱动程序,这里是它的 wiki:

Redis是一个内存数据结构项目,实现了具有可选持久性的分布式内存键值数据库。

因此,总而言之,您应该根据自己的需要选择使用哪个驱动程序。

于 2019-08-06T06:43:56.770 回答
1

我从来没有session在数据库中使用过,所以我不能作为事实回答你所有的问题。我想每个人都会以不同的方法或用法看到/使用这张表。

  1. 数据库表session不是必需的。默认情况下,它使用file存储。使用数据库表允许您管理用户会话,(我想)在服务器之间共享它们......
  2. Redis就像一个数据库,但复杂性较低。它只是key => value所有东西都存储在内存中的堆栈。它允许您的应用程序以极快的速度存储和检索数据。您还需要在生产或开发时安装redis-server并启动一个以使其工作。deamonworker
  3. 它们可能只不过是提供方便的信息以供使用(统计数据、日志等......)
于 2019-08-06T06:43:57.997 回答
1

除最后一个答案外,所有答案都在文档中。

  1. 数据库表仅在将database驱动程序用于会话时使用。如果您没有更改驱动程序,则使用文件存储并且不需要数据库表。

  2. Redis是一种内存数据存储,可用于存储会话信息并可以非常快速地访问它。Predis是一个 php 驱动程序,可用于连接到 Redis 存储,但您仍然需要在服务器上安装 Redis。

  3. 这些字段用于识别用户并将会话有效负载链接到他们。

于 2019-08-06T06:44:20.957 回答
1

我们需要将会话驱动程序更改为数据库或 Redis。

它基于我们的要求,就像我在每 30 分钟不活动后使用 Heroku 服务器进行部署和 Heroku 的免费 dyno 睡眠一样。而且 Heroku 不允许我们存储本地文件,它每天会自动刷新一次构建。因此,在这种情况下,我们不能为会话使用本地文件驱动程序,我们必须将会话驱动程序更改为数据库或 Redis。

我正在使用 Redis 作为我的应用程序的会话驱动程序。

于 2019-08-06T06:49:14.670 回答