Laravel - 使用哪种缓存驱动?

8

这是我第一次处理缓存,尽管我查阅了Laravel文档和其他各种网站的指南以设置它,但我还是有点迷茫,不知道要使用哪个驱动程序以及不同的缓存驱动程序有什么作用。

我的当前场景是,我有一个调度系统,您可以创建本周课程的PDF。他们还可以选择未来的日期,并制作那周的PDF。这是一个前端功能,因此访问该网站的任何人都可以使用它。有很多班级和班级模式的变化,因此查询需要查找很多记录。在支持的缓存驱动程序中,哪个驱动程序最好?(apc、array、database、file、memcached 和 redis)

额外奖励

我想了解应该使用哪个驱动程序以及为什么,以便为将来的项目做出最佳决策。那么每个驱动程序都是做什么的,什么时候最好使用它们呢?-- 没必要回答就能获得接受的答案,但我真的很想知道。

谢谢!


尽量避免询问没有具体技术问题的问题。目前,您正在询问差异,这可能会被关闭为过于宽泛,并且您还在询问最佳用例,这可能会被关闭为主要基于个人观点。这是一个有效的问题,但我认为您不太可能得到符合Stackoverflow的主题要求的答案。 - Tim Lewis
我会进行编辑,使其更加具体,谢谢提醒。 - Sensoray
没问题。我认为你最好的方法是尝试其中一些;使用每个驱动程序测试小结果集的缓存,看看是否有任何问题。当涉及文件权限时,我使用file驱动程序会有轻微问题,但除此之外,它对我的用途很有效。 - Tim Lewis
2个回答

20

当谈到在Laravel中使用缓存时,您有三种可能的“族群”可供考虑:

  1. 临时/调试

    • 数组
  2. 始终可用

    • 文件
    • 数据库
    • APC(自PHP7起我不会信任此选项)
  3. 专用

    • Redis
    • Memcached

由于您可以轻松替换缓存驱动程序,因此您不需要根据用例选择一个,而是基于您的服务器需求/负载和可能性选择一个。

例如,在您的开发机器上,我建议使用文件,因为这样您就不需要任何额外的软件来阻塞您的PC,而且即使您做了一些非常糟糕的事情(如破坏artis命令),您也可以快速清除缓存。您只需要删除storage/framework文件夹,然后您就会获得一个全新的实例(在此之后,请确保从您的存储库重新生成.gitignore文件)。

对于您的主服务器,您必须考虑您的可能性。如果您拥有其中一些免费托管网站,您几乎肯定无法安装任何新软件,因此您可以考虑使用文件或数据库。尽管数据库可能比文件更快,但在大多数情况下,它是您网站的最薄弱环节,并试图将更多数据推入该瓶颈不是一个好主意,这就是为什么我建议不要使用它,而改用文件的原因。

如果你拥有一台独立服务器,那么你应该选择memcached或redis。两者之间的选择取决于许多因素,你可以在网上找到很多比较,只需要搜索一下。我个人更喜欢redis,因为它具有持久化数据的能力,但任何一个都是一个好的解决方案。


你为什么不信任APC?这只是PHP 7的问题,还是PHP 8已经解决了它? - cyreb7
@cyreb7 当PHP7发布时,关于APC存在很多不确定性。有些人提到它已经停止支持,而另一些人则表示它仍然得到支持。说实话,我不确定APC的当前状态如何。 - HubertNNN

0
通常情况下,当您需要频繁执行特定的读取操作但不需要频繁写入时,您会使用缓存来进行频繁查询。如果不是这种情况,您通常会回退到数据库。
从您的用例来看,听起来像是一个每周运行一次的批处理作业。因此,这是一个不频繁的任务,并且数据每周都会更新。那么,您希望通过缓存实现什么目标呢?

1
实际上,这将在前端进行,在那里许多人可以查看一周的课程,或者他们想要的任何日期的一周,他们可以为他们选择的任何一周制作PDF。因此,如果人们开始制作大量的PDF,我想将其缓存。 - Sensoray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接