痛点
我想清除缓存中所有的内容,在项目根目录下执行如下语句:
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系统中文件权限问题,导致缓存文件删除失败。
网友评论