为 Laravel 会话创建 table 的目的是什么?

What is the purpose of creating table for Laravel Session?

我很困惑为什么它是先决条件 为基于 documentation 的会话创建数据库 table,而会话可以在没有它的情况下工作(db table).

有人可以解释我,

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

  3. user_idip_addressuser_agentpayloadlast_activity等字段的用途是什么?这些有什么用?

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

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

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

Redis is an in-memory data structure project implementing a distributed, in-memory key-value database with optional durability.

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

我从来没有在数据库中使用过session,所以我不能回答你所有的问题。我想每个人都会 see/use 这个 table 有不同的方法或用法。

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

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

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

  2. Redis is an in memory data store that can be used to store session information and have very fast access to it. Predis 是一个 php 驱动程序,可用于连接到 Redis 存储,但您仍然需要在服务器上安装 Redis。

  3. 这些字段用于识别用户和 link 会话负载。

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

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

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