8:cache 缓存
知识梳理
1 think\cache 或 门面模式支持缓存
2 缓存类型包括 file、memcache、wincache、sqlite、redis。
3 配置文件在 config/cache.php
4 生成目录位于 runtime/cache/目录下
5 设置缓存 第三个参数为0 表示永久
一 基本使用
Cache::set('name',['Li_bai','杜甫'],3600); //1 设置缓存 [支持数组]
Cache::set('name', $value, new DateTime('2019-10-01 12:00:00'));//使用DateTime对象设置过期时间
Cache::delete('name'); //2 删除缓存
Cache::get('name','默认值'); //3 获取缓存 [不能获取全部]
Cache::has('name'); // 4 判断缓存
Cache::clear(); //5 清空缓冲池 [把缓存目录直接删除]
二 助手函数
设置缓存数据 cache('name', $value, 3600);
获取缓存数据 var_dump(cache('name'));
删除缓存数据 cache('name', NULL);
返回缓存对象实例 $cache = cache();
三 其他方法
1)push() 追加一条数据到数组中
Cache::set('name',['李白','杜甫']); //数组传入
Cache::push('name','李商隐'); //追加一个数据到数组中
//打印结果
array(3) {
[0]=>
string(6) "李白"
[1]=>
string(6) "杜甫"
[2]=>
string(6) "李商隐"
}
2)pull() 先取值再删除
Cache::set('name',['李白','杜甫']);//数组传入
var_dump(Cache::has('name'));//返回true
Cache::pull('name');//取值后删除
var_dump(Cache::has('name'));//返回false
3)自增 inc() 自减 dec() [ 针对数值类型的缓存数据 ]
//1 值为已经存在的变量
Cache::set('count',1);//设置变量 Cache::inc('count',10);//参数1:变量 参数2:步长 echo Cache::get('count');//输出11 再刷新不变了
//2 参数1 为新变量
Cache::inc('count',2); //参数1:变量 参数2:步长
echo Cache::get('count');//输出2 4 6 8 10 .... 每次刷新增加步长2
4)remember() 如果缓存不存在 则写入数据后返回
//1 常规写法
Cache::remember('time',time(),3600);/ echo Cache::get('time'); //第二个参数为闭包 且支持依赖注入 Cache::remember('create_time',function (Request $request){ return $request->time(); },3600); echo Cache::get('create_time');
5)给缓存数据打标签 tag()
Cache::tag('唐代')->set('name',['李白','杜甫','王勃'],3600); Cache::tag('宋代')->set('name',['苏轼','辛弃疾'],3600);
可以使用追加某个缓存到标签 Cache::tag('tag')->append('name3'); //没有试验操作
Cache::tag('唐代')->clear();//删除指定标签的数据 var_dump(Cache::tag('唐代')->get('name'));//错误调用 var_dump(Cache::get('name')->tag('唐代'));//错误调用
这个小知识点木有太明白
6 获取缓存对象
$handler = Cache::handler();
可以调研驱动类的高级方法
7)设置 获取 删除 多缓存数据
//获取 Cache::getMultiple();
//设置 Cache::setMultiple();
//删除 Cache::deleteMultiple($keys);
三 其他
1)跨应用缓存
默认情况下,文件缓存数据是区分不同应用的,如果你希望缓存跨应用,可以设置一个统一的数据缓存 path 目录
2)切换缓存类型
// 使用文件缓存 Cache::set('name','value',3600); Cache::get('name');
// 使用Redis缓存 Cache::store('redis')->set('name','value',3600); Cache::store('redis')->get('name');
// 切换到文件缓存 Cache::store('default')->set('name','value',3600); Cache::store('default')->get('name');
3)返回缓存类型对象句柄
如果要返回当前缓存类型对象的句柄,可以使用 // 获取Redis对象 进行额外方法调用 Cache::store('redis')->handler();
4)自定义驱动
如果需要自定义缓存驱动,需要继承 think\cache\Driver 类,并且实现 think\contract\CacheHandlerInterface 接口。
暂时用不到 不用研究

浙公网安备 33010602011771号