Blogger Information
Blog 128
fans 9
comment 5
visits 241146
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
19.【TP6学习笔记】Cache缓存的设置和清除等使用操作
 一纸荒凉* Armani
Original
8976 people have browsed it

Cache的使用

ThinkPHP采用think\Cache类(实际使用think\facade\Cache类即可)提供缓存功能支持。

内置支持的缓存类型包括file、memcache、wincache、sqlite、redis。

ThinkPHP的缓存类遵循PSR-16规范。

设置

全局的缓存配置直接修改配置目录下面的cache.php文件。

新版的缓存支持多通道,你可以事先定义好所有的缓存类型及配置参数,然后在使用的时候可以随时切换。默认使用的是文件缓存类型,你可以添加redis缓存支持,例如:

return [    'default'    =>    'file',    'stores'    =>    [        // 文件缓存        'file'   =>  [            // 驱动方式            'type'   => 'file',            // 设置不同的缓存保存目录            'path'   => '../runtime/file/',        ],          // redis缓存        'redis'   =>  [            // 驱动方式            'type'   => 'redis',            // 服务器地址            'host'       => '127.0.0.1',        ],      ],];

缓存参数根据不同的缓存方式会有所区别,通用的缓存参数如下:

参数描述
type缓存类型
expire缓存有效期 (默认为0 表示永久缓存)
prefix缓存前缀(默认为空)
serialize缓存序列化和反序列化方法

如果是自定义驱动,type的值则为自定义驱动的类名(包含命名空间)

使用

设置缓存

设置缓存有效期

// 缓存在3600秒之后过期Cache::set('name', $value, 3600);

可以使用DateTime对象设置过期时间

Cache::set('name', $value, new DateTime('2019-10-01 12:00:00'));

如果设置成功返回true,否则返回false。

缓存自增

针对数值类型的缓存数据,可以使用自增操作,例如:

Cache::set('name', 1);// name自增(步进值为1)Cache::inc('name');// name自增(步进值为3)Cache::inc('name',3);

只能对数字或者浮点型数据进行自增和自减操作。

缓存自减

针对数值类型的缓存数据,可以使用自减操作,例如:

// name自减(步进值为1)Cache::dec('name');// name自减(步进值为3)Cache::dec('name',3);

获取缓存

获取缓存数据可以使用:

Cache::get('name');

如果name值不存在,则默认返回 false

支持指定默认值,例如:

Cache::get('name','');

表示如果name值不存在,则返回空字符串。

追加一个缓存数据

如果缓存数据是一个数组,可以通过push方法追加一个数据。

Cache::set('name', [1,2,3]);Cache::push('name', 4);Cache::get('name'); // [1,2,3,4]

删除缓存

Cache::delete('name');

获取并删除缓存

Cache::pull('name');

如果name值不存在,则返回null

清空缓存

Cache::clear();

不存在则写入缓存数据后返回

Cache::remember('start_time', time());

如果start_time缓存数据不存在,则会设置缓存数据为当前时间。

第二个参数可以使用闭包方法获取缓存数据,并支持依赖注入。

Cache::remember('start_time', function(Request $request){    return $request->time();});

remember方法的第三个参数可以设置缓存的有效期。

缓存标签

支持给缓存数据打标签,例如:

Cache::tag('tag')->set('name1','value1');Cache::tag('tag')->set('name2','value2');// 清除tag标签的缓存数据Cache::tag('tag')->clear();

缓存标签不会改变缓存的读取操作,所以获取方式依然是:

Cache::get('name1');

并支持同时指定多个缓存标签操作

Cache::tag(['tag1', 'tag2'])->set('name1', 'value1');Cache::tag(['tag1', 'tag2'])->set('name2', 'value2');// 清除多个标签的缓存数据Cache::tag(['tag1','tag2'])->clear();

可以追加某个缓存标识到标签

Cache::tag('tag')->append('name3');

获取标签的缓存标识列表

Cache::getTagItems('tag');

获取缓存对象

可以获取缓存对象,并且调用驱动类的高级方法,例如:

// 获取缓存对象句柄$handler = Cache::handler();

助手函数

系统对缓存操作提供了助手函数cache,用法如下:

// 设置缓存数据cache('name', $value, 3600);// 获取缓存数据var_dump(cache('name'));// 删除缓存数据cache('name', NULL);// 返回缓存对象实例$cache = cache();
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post