Laravel cache:clear 的坑

原创 Laravel
阅读数: 1689 2019年04月06日

项目中的缓存使用了 redis,然后在单独使用 Redis 。

每次 svn 提交,默认会清除缓存,使用的是:php artisan cache:clear 命令。问题来了,我正常使用的 Redis 数据也被清理掉了,当前选择的 redis 库里面数据都没了。

搜索了一圈,确实如此。


解决方案:缓存用的 redis 库要和平时的 redis 库分开:

1、配置文件 database.php 修改,在 redis 这一列增加一个连接配置。

'redis' => [

      'client' => 'phpredis',

      'default' => [
          'host' => env('REDIS_HOST', '127.0.0.1'),
          'password' => env('REDIS_PASSWORD', null),
          'port' => env('REDIS_PORT', 6379),
          'database' => 0, //必须和缓存使用的数据库分开,因为,artisan cache:clear 的时候会把这个库的数据都清空哦
          'prefix' => env('REDIS_PREFIX', 'phpriji'), //key 前缀
   'read_timeout' => 10, //连接超时时间
      ],

    //缓存专用
    'cache' => [
       'host' => env('REDIS_HOST', '127.0.0.1'),
       'password' => env('REDIS_PASSWORD', null),
       'port' => env('REDIS_PORT', 6379),
       'database' => 4, //缓存使用的数据库,artisan cache:clear 的时候会把这个库的数据都清空哦
       'prefix' => env('REDIS_PREFIX', 'phpriji'), //key 前缀
       'read_timeout' => 10, //连接超时时间
    ],

  ],

2、修改 cache.php 配置

'redis' => [
    'driver' => 'redis',
    'connection' => 'cache', //指定用 redis cache 专用的连接,避免 artisan cache:clear 带来的误删除
],


然后就可以了。

phpriji.cn | 网站地图 | 沪ICP备17015433号-1