引言
前一期我们介绍了存储用户会话数据到服务器,并通过框架提供的Session类
进行数据读写操作的方法。
但是有些数据,如数据库集合,API接口等等,对于全局的用户来说是无差别的,
这时候我们需要全局缓存以便提供给所有的用户使用。
本期就来说说Cache缓存。
代码时间
laravel在设计上做了很巧妙的构思,将缓存相关的类,设计得有插接件的感觉。
所以,你看到Session Cache Cookie 这些缓存数据类,基本上除了底层的驱动,
数据结构,过期特性等等,都集成了系统数组类Arr的操作方法。所以上述三种缓存在
操作方法上有很多相同之处。
cache缓存的配置文件在 config/cache.php 内,支持的驱动默认是 file,
也就是文本文件存储。还有很多内置可选项:
- file 文件存储
- apc php内置缓存
- array 内存变量
- database 数据库
- memcached / redis 内存数据库
- dynamodb aws内存数据库
其中array驱动,是把数据直接存在变量内,放在服务器内存中,一次请求结束,或者php-fpm
闲置超时释放,就会注销掉。其他都提供了持久化的方案。
当然了,Cache缓存提供的数据类型就多了去了,根据驱动的不同,支持的存储结构也不相同。
比如文件类,只能是数组,链表,键值。而redis数据库则可以存储集合。这在使用的时候,
需要格外留意。
根据键名获取一个缓存值操作方法如下:
$users = Cache::get('users');
上面的代码使用了系统启动时注册的全局Cache门面方法,我们也可以从容器内获取一个Cache实例,
比如在路由内使用依赖注入的方式实例化:
Route::get('users', function (Illuminate\Contracts\Cache\Repository $cache) {
return $cache->get('users');
}