从ThinkPHP迁移项目 - 缓存类

优质
小牛编辑
141浏览
2023-12-01

Github : ThinkORM - 从ThinkPHP5.1独立出来的缓存管理类库

安装

  1. composer require topthink/think-cache

创建缓存类配置

修改 Conf/Config.php 文件,在userConf方法中添加如下配置,缓存类支持多种驱动,这里仅列出使用File驱动需要的配置项,具体不同的驱动使用的配置项,可以到类库目录的driver目录中打开对应的驱动文件,查看支持的完整配置

  1. private function userConf()
  2. {
  3. return array(
  4. 'cache' => [
  5. // 驱动方式(支持file/memcache/redis/xcache/wincache/sqlite)
  6. 'type' => 'File',
  7. // 缓存保存目录
  8. 'path' => ROOT . '/Temp/Cache/',
  9. // 缓存前缀
  10. 'prefix' => '',
  11. // 缓存有效期 0表示永久缓存
  12. 'expire' => 0,
  13. ]
  14. );
  15. }

全局初始化缓存类

Conf/Event.php的框架初始化完成事件中初始化数据库类配置,初始化完成后,即可在全局任意位置使用缓存类

  1. function frameInitialized()
  2. {
  3. // 获得数据库配置
  4. $cacheConf = Config::getInstance()->getConf('cache');
  5. // 全局初始化
  6. Cache::init($cacheConf);
  7. }

缓存操作示例

ThinkPHP的使用方法一致,初始化完成后即可全局静态调用

  1. // 设置缓存
  2. Cache::set('val','value',600);
  3. // 判断缓存是否设置
  4. Cache::has('val');
  5. // 获取缓存
  6. Cache::get('val');
  7. // 删除缓存
  8. Cache::rm('val');
  9. // 清除缓存
  10. Cache::clear();
  11. // 读取并删除缓存
  12. Cache::pull('val');
  13. // 不存在则写入
  14. Cache::remember('val','value');
  15. // 对于数值类型的缓存数据可以使用
  16. // 缓存增+1
  17. Cache::inc('val');
  18. // 缓存增+5
  19. Cache::inc('val',5);
  20. // 缓存减1
  21. Cache::dec('val');
  22. // 缓存减5
  23. Cache::dec('val',5);

多种缓存驱动切换

可以在使用过程中动态的切换到另一种缓存实现,如下面的代码

  1. // 连接到另一缓存实现
  2. $redis = Cache::connect([
  3. 'type' => 'redis',
  4. 'host' => '127.0.0.1',
  5. 'port' => 6379,
  6. 'prefix' => '',
  7. 'expire' => 0,
  8. ]);
  9. // 进行缓存操作
  10. $redis->set('var', 'value', 600);
  11. $redis->get('var');
  12. // 或者使用
  13. $redis->val = 'value';
  14. echo $redis->val;