如何在同一台服务器上创建另一个 Redis 服务器实例(由 Laravel Forge 管理)
How to create another Redis server instance on same server (managed by Laravel Forge)
Laravel Horizon 即将到来,所以我希望将我的队列从 beanstalkd 切换到 Redis,以利用更好的队列监控。
不过,偶尔也得表演一下php artisan cache:clear
。但如果我这样做,因为我的队列现在在 Redis 中,它会清除我所有的作业,如 GitHub issue.
中所讨论的
建议是创建一个单独的 Redis 实例。这是我的问题:
- 如何在我的 Laravel Forge 托管服务器中创建多个 Redis 服务器实例?
- 我应该在我的配置文件中更改什么,以便会话和缓存指向一个 Redis 服务器实例,而我的队列指向另一个 Redis 服务器实例? (现在知道答案了,见编辑中的link)
php artisan cache:clear
现在只会擦除我的缓存正在使用的 Redis 实例中的数据,而我的队列工作 Redis 服务器不会受到影响,这是否正确?
编辑
在进一步搜索互联网后,我遇到了 this discussion。
- 所以我觉得我真的不需要创建一个单独的Redis服务器实例,只是使用不同的Redis DB号。这个对吗?
php artisan cache:clear
是否只清除那个数据库号?同一实例上的其他数据库编号不受影响?
Does php artisan cache:clear wipe out only that DB number?
这是准确的。 cache:clear
命令 sends a FLUSHDB
命令在引擎盖下 仅 擦除选择用于存储缓存数据的 Redis 数据库中的数据。
为Laravel的每个服务在单个Redis实例中隔离数据的标准方法是为[=31]中的每个服务分配不同的数据库=]config/database.php:
'redis' => [
'default' => [
...
'database' => 0,
],
'cache' => [
...
'database' => 1,
],
],
上面的配置指示 Laravel 使用数据库 1
存储缓存数据,使用数据库 0
进行所有其他 Redis 操作。然后,当我们要清除缓存时——使用php artisan cache:clear
或app('cache')->flush()
等——Laravel不会擦除存储在Redis中的其他数据。
我们可以通过创建单独的连接来扩展此配置模式,这些连接为每个会话、队列和广播 API 指定不同的 Redis 数据库。随着应用程序的增长,这为管理数据提供了更大的灵活性。
当然,对于大型应用程序,我们甚至可以为这些服务中的每一个使用不同的Redis 服务器来提高可扩展性,因为我们的应用程序数据超出了单个Redis 服务器的限制。
Laravel Horizon 即将到来,所以我希望将我的队列从 beanstalkd 切换到 Redis,以利用更好的队列监控。
不过,偶尔也得表演一下php artisan cache:clear
。但如果我这样做,因为我的队列现在在 Redis 中,它会清除我所有的作业,如 GitHub issue.
建议是创建一个单独的 Redis 实例。这是我的问题:
- 如何在我的 Laravel Forge 托管服务器中创建多个 Redis 服务器实例?
- 我应该在我的配置文件中更改什么,以便会话和缓存指向一个 Redis 服务器实例,而我的队列指向另一个 Redis 服务器实例? (现在知道答案了,见编辑中的link)
php artisan cache:clear
现在只会擦除我的缓存正在使用的 Redis 实例中的数据,而我的队列工作 Redis 服务器不会受到影响,这是否正确?
编辑
在进一步搜索互联网后,我遇到了 this discussion。
- 所以我觉得我真的不需要创建一个单独的Redis服务器实例,只是使用不同的Redis DB号。这个对吗?
php artisan cache:clear
是否只清除那个数据库号?同一实例上的其他数据库编号不受影响?
Does php artisan cache:clear wipe out only that DB number?
这是准确的。 cache:clear
命令 sends a FLUSHDB
命令在引擎盖下 仅 擦除选择用于存储缓存数据的 Redis 数据库中的数据。
为Laravel的每个服务在单个Redis实例中隔离数据的标准方法是为[=31]中的每个服务分配不同的数据库=]config/database.php:
'redis' => [
'default' => [
...
'database' => 0,
],
'cache' => [
...
'database' => 1,
],
],
上面的配置指示 Laravel 使用数据库 1
存储缓存数据,使用数据库 0
进行所有其他 Redis 操作。然后,当我们要清除缓存时——使用php artisan cache:clear
或app('cache')->flush()
等——Laravel不会擦除存储在Redis中的其他数据。
我们可以通过创建单独的连接来扩展此配置模式,这些连接为每个会话、队列和广播 API 指定不同的 Redis 数据库。随着应用程序的增长,这为管理数据提供了更大的灵活性。
当然,对于大型应用程序,我们甚至可以为这些服务中的每一个使用不同的Redis 服务器来提高可扩展性,因为我们的应用程序数据超出了单个Redis 服务器的限制。