jcs*_*ano 2 redis laravel laravel-forge laravel-5
Laravel Horizon即将推出,所以我希望将我的队列从beanstalkd切换到Redis,以利用更好的队列监控.
但是,偶尔我必须表演php artisan cache:clear.但是如果我这样做,因为我的队列现在在Redis中,它将消除我的所有工作,正如GitHub问题中所讨论的那样.
建议是制作一个单独的Redis实例.这是我的问题:
php artisan cache:clear现在只会清除我的缓存正在使用的Redis实例中的数据,并且我的队列工作者Redis服务器不会受到影响?在进一步搜索互联网时,我遇到了这个讨论.
php artisan cache:clear仅清除该DB号码?同一实例上的其他DB编号不受影响?php artisan缓存:清除只清除那个DB号吗?
这是准确的.该cache:clear命令向FLUSHDB引擎下的Redis 发送命令,该命令仅擦除为存储缓存数据而选择的Redis数据库中的数据.
在每个Laravel服务的单个 Redis实例中隔离数据的标准方法是为config/database.php中的每个服务分配一个不同的数据库:
'redis' => [
'default' => [
...
'database' => 0,
],
'cache' => [
...
'database' => 1,
],
],
Run Code Online (Sandbox Code Playgroud)
上面的配置指示Laravel使用数据库1存储缓存数据,并指示0所有其他Redis操作的数据库.然后,当我们要清除缓存使用php artisan cache:clear或app('cache')->flush()等时,Laravel不会删除存储在Redis中的其他数据.
我们可以通过创建单独的连接来扩展此配置模式,这些连接为每个会话,队列和广播API指定不同的Redis数据库.随着应用程序的增长,这为管理数据提供了更大的灵活性.
当然,对于大型应用程序,我们甚至可以为这些服务中的每一个使用不同的Redis服务器,以提高可伸缩性,因为我们的应用程序数据超出了单个Redis服务器的限制.