gpt4 book ai didi

laravel - 如何在同一台服务器上创建另一个 Redis 服务器实例(由 Laravel Forge 管理)

转载 作者:IT王子 更新时间:2023-10-29 06:03:32 25 4
gpt4 key购买 nike

Laravel Horizon即将到来,所以我希望将我的队列从 beanstalkd 切换到 Redis,以利用更好的队列监控。

但是,偶尔我必须执行 php artisan cache:clear。但如果我这样做,因为我的队列现在在 Redis 中,它将清除我所有的作业,如本 GitHub issue 中所讨论的那样.

建议是制作一个单独的 Redis 实例。这是我的问题:

  1. 如何在我的 Laravel Forge 中创建多个 Redis 服务器实例托管服务器?
  2. 我应该在我的配置文件中更改什么,以便 session 和缓存指向一个 Redis 服务器实例,而我的队列指向另一个 Redis 服务器实例? (现在知道答案了,查看编辑中的链接)
  3. php artisan cache:clear 现在只会清除我的缓存正在使用的 Redis 实例中的数据,而我的队列工作 Redis 服务器不会受到影响,这是否正确?

编辑

在进一步搜索互联网后,我遇到了 this discussion .

  1. 所以我认为我真的不需要创建一个单独的 Redis 服务器实例,只需使用一个不同的 Redis 数据库编号即可。这个对吗?
  2. php artisan cache:clear 是否只清除该数据库编号?同一实例上的其他数据库编号不受影响?

最佳答案

Does php artisan cache:clear wipe out only that DB number?

这是准确的。 cache:clear 命令 sends a FLUSHDB命令在引擎盖下发送给 Redis,它删除选择用于存储缓存数据的 Redis 数据库中的数据。

为每个 Laravel 服务在 单个 Redis 实例中隔离数据的标准方法是为 config/database.php 中的每个服务分配不同的数据库:

'redis' => [ 
'default' => [
...
'database' => 0,
],
'cache' => [
...
'database' => 1,
],
],

上面的配置指示 Laravel 使用数据库 1 存储缓存数据,使用数据库 0 进行所有其他 Redis 操作。然后,当我们想要清除缓存时——使用 php artisan cache:clearapp('cache')->flush() 等——Laravel 不会删除存储在 Redis 中的其他数据。

我们可以通过创建单独的连接来扩展此配置模式,这些连接为每个 session 、队列和广播 API 指定不同的 Redis 数据库。随着应用程序的增长,这为管理数据提供了更大的灵 active 。

当然,对于大型应用程序,我们甚至可以为这些服务中的每一个使用不同的 Redis 服务器来提高可扩展性,因为我们的应用程序数据超出了单个 Redis 服务器的限制。

关于laravel - 如何在同一台服务器上创建另一个 Redis 服务器实例(由 Laravel Forge 管理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com