fi1a/cache

PHP 缓存库

1.0.6 2023-02-20 00:34 UTC

This package is auto-updated.

Last update: 2024-09-20 04:03:46 UTC


README

Latest Version Software License PHP Version Coverage Status Total Downloads Support mail

PHP 库提供了用于实现缓存的类和方法。包含适用于不同缓存机制的适配器。

可用的适配器

  • Fi1a\Cache\Adapters\FilesystemAdapter - 文件系统缓存适配器;
  • Fi1a\Cache\Adapters\MemoryAdapter - 内存缓存适配器;
  • Fi1a\Cache\Adapters\NullAdapter - null 适配器。

安装

可以使用 Composer 将此包作为依赖项安装。

composer require fi1a/cache

访问值和保存缓存

使用实现 Fi1a\Cache\CacheItemPoolInterface 接口的类来访问缓存值。它代表所有缓存值的逻辑存储库。所有缓存元素都以 Fi1a\Cache\CacheItemInterface 对象的形式提取。

use Fi1a\Cache\Adapters\FilesystemAdapter;
use Fi1a\Cache\CacheItemPool;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$cachePath = __DIR__ . '/runtime/cache';

if (!is_dir($cachePath)) {
    mkdir($cachePath, 0775, true);
}

$filesystem = new Filesystem(new LocalAdapter($cachePath));
$adapter = new FilesystemAdapter($filesystem->factoryFolder($cachePath));

$cache = new CacheItemPool($adapter, 'your/namespace');

$item = $cache->getItem('cache-key'); // Fi1a\Cache\CacheItemInterface
$item->get(); // null
$item->set('some-value');
$item->expiresAfter(10); // время жизни 10 секунд
$cache->save($item);

$item = $cache->getItem('cache-key'); // Fi1a\Cache\CacheItemInterface
$item->get(); // 'some-value'

Fi1a\Cache\CacheItemPoolInterface 构造函数的参数

实现缓存元素池的 Fi1a\Cache\CacheItemPoolInterface 的方法

缓存值

Fi1a\Cache\CacheItemInterface 定义了缓存系统中使用的元素。实现 Fi1a\Cache\CacheItemInterface 接口的对象由 Fi1a\Cache\CacheItemPoolInterface 类创建,该类负责所有必要的设置,并将对象与唯一键关联。

获取一个缓存元素

如果没有与键 'cache-key' 关联的缓存元素,将返回新的缓存元素。

use Fi1a\Cache\Adapters\FilesystemAdapter;
use Fi1a\Cache\CacheItemPool;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$cachePath = __DIR__ . '/runtime/cache';

if (!is_dir($cachePath)) {
    mkdir($cachePath, 0775, true);
}

$filesystem = new Filesystem(new LocalAdapter($cachePath));
$adapter = new FilesystemAdapter($filesystem->factoryFolder($cachePath));

$cache = new CacheItemPool($adapter, 'your/namespace');

$item = $cache->getItem('cache-key'); // Fi1a\Cache\CacheItemInterface

获取多个缓存元素

如果不存在具有特定键的任何缓存元素,将返回新的缓存元素。

use Fi1a\Cache\Adapters\FilesystemAdapter;
use Fi1a\Cache\CacheItemPool;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$cachePath = __DIR__ . '/runtime/cache';

if (!is_dir($cachePath)) {
    mkdir($cachePath, 0775, true);
}

$filesystem = new Filesystem(new LocalAdapter($cachePath));
$adapter = new FilesystemAdapter($filesystem->factoryFolder($cachePath));
$cache = new CacheItemPool($adapter, 'your/namespace');
$items = $cache->getItems([['cache-key-1'], ['cache-key-2', 'hash2']]); // Fi1a\Cache\CacheItemInterface[]

实现缓存元素的 Fi1a\Cache\CacheItemInterface 接口的方法

文件系统缓存适配器

要使用文件系统缓存,应将 Fi1a\Cache\Adapters\FilesystemAdapter 对象传递给 Fi1a\Cache\CacheItemPool 类的构造函数。

use Fi1a\Cache\Adapters\FilesystemAdapter;
use Fi1a\Cache\CacheItemPool;

$adapter = new FilesystemAdapter(__DIR__ . '/runtime/cache');
$cache = new CacheItemPool($adapter, 'your/namespace');

作为参数,Fi1a\Cache\Adapters\FilesystemAdapter 类的构造函数接受缓存文件的文件夹路径。

内存缓存适配器

有时需要仅在实际执行时存储缓存,并在执行完成后删除它。为此,可以使用内存缓存适配器 Fi1a\Cache\Adapters\MemoryAdapter

use Fi1a\Cache\Adapters\MemoryAdapter;
use Fi1a\Cache\CacheItemPool;

$adapter = new MemoryAdapter();
$cache = new CacheItemPool($adapter, 'your/namespace');
$items = $cache->getItems([['cache-key-1'], ['cache-key-2', 'hash2']]); // Fi1a\Cache\CacheItemInterface[]

null 适配器

null 适配器代表中立、无操作的行性行为。可以在缓存支持但当前不需要的逻辑中使用。

use Fi1a\Cache\Adapters\NullAdapter;
use Fi1a\Cache\CacheItemPool;

$adapter = new NullAdapter();
$cache = new CacheItemPool($adapter, 'your/namespace');
$items = $cache->getItems([['cache-key-1'], ['cache-key-2', 'hash2']]); // Fi1a\Cache\CacheItemInterface[]