【Laravel踩坑记】项目中清除缓存失败

痛点

我想清除缓存中所有的内容,在项目根目录下执行如下语句:

php artisan cache:clean

但是我再次获取缓存中的内容还是存在:

//之前缓存的内容还是存在$unreads = Cache::get('unreads_' . $this->id);

问题的解决思路

让我们回到问题本质,缓存解决了什么问题:

数据库的局限:数据库连接非是非常"昂贵"的资源连接池的连接数是有限的,如果用户过多,势必要等待读写数据时需要加锁每次用户请求都访问数据库,在多用户,大并发是不行的

解决思路如下:

“在计算机行业的所有问题,都可以通过增加一个抽象层来解决”在应用程序和数据库之间增加一个层:缓存层缓存的数据需要保存起来

通过上面的思路,先找到Laravel中cache保存在什么地方:

storage

├── app├── logs└──framework└──cache└── data

随便打开data目录下一个文件内容如下:

1513145594a:7:{s:8:"comments";i:0;s:5:"chats";i:2;s:8:"requests";i:0;s:5:"likes";i:0;s:7:"follows";i:0;s:4:"tips";i:0;s:6:"others";i:0;}

在Larave中默认的缓存都已JSON格式存放在该目录下.

问题来了

执行缓存清除操作后这个文件夹下文件仍然存在,所以问题的最终定位是执行清除命令后该文件夹并没有删除。

sudo chmod -R 777 .

再执行下面的命令

php artisan cache:clean

发现问题已经解决。

总结

Linux系统中文件权限问题,导致缓存文件删除失败。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,314评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 一方天地间,我恋上了你。 我想靠近你,你却总是防着我; 我想靠近你,你却总是伤害我。 甚至攻我、杀我、吃掉我! 一...
    纹枰飞舞阅读 276评论 0 0
  • 色不异空,空不异色,色即是空,空即是色,受想行识,亦复如是。 无挂碍故,无有恐怖,远离颠倒梦想,究竟涅盘。三世诸...
    王炳惠阅读 458评论 0 4