缓存

IMI 中的缓存,符合PSR-16规范。使用时需要先配置驱动和实例。

配置

文件缓存

  1. <?php
  2. return [
  3. 'caches' => [
  4. // 缓存名称
  5. 'alias1' => [
  6. // 缓存驱动类
  7. 'handlerClass' => \Imi\Cache\Handler\File::class,
  8. // 驱动实例配置
  9. 'option' => [
  10. 'savePath' => '文件缓存保存路径',
  11. // 保存文件名处理回调,一般可以不写
  12. // 'saveFileNameCallback' => function($savePath, $key){
  13. // return '';
  14. // },
  15. ],
  16. ],
  17. ],
  18. ];

Redis 缓存

  1. return [
  2. 'caches' => [
  3. // 缓存名称
  4. 'alias1' => [
  5. // 缓存驱动类
  6. 'handlerClass' => \Imi\Cache\Handler\Redis::class,
  7. // 驱动实例配置
  8. 'option' => [
  9. 'poolName' => '连接池名称',
  10. ],
  11. ],
  12. ],
  13. ];

文件缓存不支持分布式存储,请慎重选择!

使用

写入缓存

  1. // 永久有效
  2. Imi\Cache\CacheManager::set('缓存名称', 'key', 'value');
  3. $ttl = 3600; // 缓存有效时间,单位:秒
  4. Imi\Cache\CacheManager::set('缓存名称', 'key', 'value', $ttl);

批量写入缓存

  1. $values = [
  2. 'k1' => 'v1',
  3. 'k2' => 'v2',
  4. ];
  5. Imi\Cache\CacheManager::setMultiple('缓存名称', $values);
  6. $ttl = 3600; // 缓存有效时间,单位:秒
  7. Imi\Cache\CacheManager::setMultiple('缓存名称', $values, $ttl);

读取缓存

  1. Imi\Cache\CacheManager::get('缓存名称', 'key');
  2. Imi\Cache\CacheManager::get('缓存名称', 'key', 'default');

批量读取缓存

  1. $keys = ['k1', 'k2'];
  2. Imi\Cache\CacheManager::getMultiple('缓存名称', $keys);
  3. Imi\Cache\CacheManager::getMultiple('缓存名称', $keys, 'default');

删除缓存

  1. Imi\Cache\CacheManager::delete('缓存名称', 'key');

批量删除缓存

  1. $keys = ['k1', 'k2'];
  2. Imi\Cache\CacheManager::deleteMultiple('缓存名称', $keys);

缓存是否存在

  1. Imi\Cache\CacheManager::has('缓存名称', 'key');

清空缓存

  1. Imi\Cache\CacheManager::clear('缓存名称');