简介

Laravel 是一个流行的 PHP 框架,用于构建可扩展的高性能 Web 应用程序。

在本文中,我们将学习如何使用serverless Redis通过将 Laravel 会话和缓存数据存储在 serverless Redis 实例中来扩展 Laravel 应用程序。

先决条件

在开始之前,您需要具备以下条件:

  • Upstash 账户:如果您没有,您可以免费注册,无需信用卡。

  • 如果你没有安装 Laravel,你可以按照这里的步骤操作:一键安装 Laravel

架构概述

让我们考虑以下场景,而不是在单个服务器上运行 Laravel:

  • 运行在两台 Web 服务器上的 Laravel 应用程序。

  • 单个负载均衡器负责将请求路由到两个 Web 服务器。

  • MySQL 数据库服务器,用于存储应用程序的数据。

  • Upstash Serverless Redis 集群负责缓存数据和存储用户会话。

图表:

[使用无服务器 Redis 扩展 Laravel](https://res.cloudinary.com/practicaldev/image/fetch/s--5ujVJJZX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur .com/rFmygO1.png)

什么是Serverless Redis?

Serverless Redis 是一种完全托管的数据库即服务产品,其定价基于每个命令,因此您只需按实际使用量付费。

这样您就不必过度配置您的服务器,并且您可以根据需要扩展您的应用程序。

为什么选择Serverless Redis?

默认情况下,Laravel 会将用户会话存储在 Web 服务器磁盘上的文件中。这样,如果负载均衡器将用户请求转发到不同的服务器,用户会话就会丢失。

这就是为什么有一个集中的地方来存储用户会话和应用程序缓存很重要,这样它们可以在请求之间和多个服务器之间共享,而不会在每次负载均衡器将请求转发到不同的服务器时丢失。

当然,你也可以使用你的数据库来存储用户会话和缓存数据,但是为了更好的性能,建议使用 Redis 以获得更好的性能。如果您想了解有关不同选项的性能优势的更多信息,请在此处查看这篇精彩的文章:哪个是性能最佳的 Laravel 缓存驱动程序?。

水平缩放与垂直缩放

简单说一下水平和垂直缩放的区别:

  • 当您拥有一台服务器时,您可以通过向其添加更多资源来垂直扩展它。例如,您可以添加更多 CPU 内核、RAM 或磁盘空间来纵向扩展

  • 另一方面,水平扩展是当您添加更多负责为横向扩展提供服务的服务器时。

这是水平缩放与垂直缩放的简单示例:

[水平与垂直缩放](https://res.cloudinary.com/practicaldev/image/fetch/s--RCLXcV49--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur. com/RAklmV6.png)

在水平扩展应用程序时,以可扩展的方式处理用户会话和缓存数据非常重要。

创建无服务器Redis集群

使用Upstash,您可以按照以下步骤在 30 秒内创建无服务器 Redis 集群:

  • 登录到您的Upstash 帐户。

  • 单击创建数据库按钮。

  • 输入您的 Redis 集群的名称并选择一个区域。

  • 单击创建按钮。

而已!您现在拥有一个可以使用的无服务器 Redis 集群。

确保记下 Redis 集群的端点以及密码和端口。

使用无服务器 Redis 配置 Laravel

现在你有了一个无服务器的 Redis 集群,你可以配置 Laravel 来像使用其他 Redis 实例一样使用它。

安装Predis包

过去,您将使用 PHP Redis 扩展连接到您的 Redis 集群。但是,现在您可以改用 Predis 包。

要安装 Predis 包,请运行以下命令:

composer require predis/predis

进入全屏模式 退出全屏模式

接下来,转到您的 Laravel 项目的.env文件并更新以下行:

REDIS_HOST=your_upstash_redis_endpoint
REDIS_PASSWORD=your_upstash_redis_password
REDIS_PORT=your_upstash_redis_port

进入全屏模式 退出全屏模式

在更改 Redis 详细信息时,请确保还将缓存驱动程序和会话驱动程序更改为redis:

CACHE_DRIVER=redis
SESSION_DRIVER=redis

进入全屏模式 退出全屏模式

最后,通过运行以下命令清除配置缓存:

php artisan config:clear

进入全屏模式 退出全屏模式

这样,您的 Laravel 应用程序将使用无服务器 Redis 集群来存储其缓存和会话数据。

结论

将 Laravel 与 Serverless Redis 一起使用是扩展应用程序的好方法。即使您在 Kubernetes 集群上运行 Laravel,您仍然可以使用无服务器 Redis 集群以可扩展的方式存储您的用户会话和缓存数据。

有关 Upstash 的更多信息,请查看他们的文档。

有关如何扩展 Laravel 应用程序的更多信息,请查看以下文章:

  • 如何使用托管数据库和对象存储设置可扩展的 Laravel 6 应用程序
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐