为Laravel Session创建表的目的是什么?

时间:2019-08-06 06:21:37

标签: laravel laravel-5.8 laravel-session

我很困惑为什么在没有会话的情况下可以基于documentation创建用于会话的数据库表的先决条件(db table)。

有人可以解释我,

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

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

4 个答案:

答案 0 :(得分:1)

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

如果您选择使用数据库,则需要创建表,Laravel随后将这些表用于存储这些值。

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

  

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

因此,总而言之,您应该选择要使用哪个驱动程序来满足您的需求。

答案 1 :(得分:1)

我从没在数据库中使用过session,所以我不能回答您所有的问题。我认为每个人都会以不同的方式或用法来查看/使用此表。

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

答案 2 :(得分:1)

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

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

  2. Redis是一种内存中数据存储,可用于存储会话信息并对其进行快速访问。 Predis是可用于连接到Redis存储的php驱动程序,但是您仍然需要在服务器上安装Redis。

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

答案 3 :(得分:1)

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

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

我将Redis用作应用程序的会话驱动程序。