byjg/cache-engine

一个多功能的缓存引擎,PSR-6 和 PSR-16 的实现,具有多个驱动程序。

4.9.3 2024-08-27 20:40 UTC

This package is auto-updated.

Last update: 2024-09-15 20:46:46 UTC


README

Build Status Opensource ByJG GitHub source GitHub license GitHub release

一个多功能的缓存引擎,PSR-6 和 PSR-16 的实现,具有多个驱动程序。

PSR-16

PSR-16 定义了一个比 PSR-6 更简洁的简单缓存接口。以下是本库中符合 PSR-16 规范的可用引擎列表

要创建一个新的缓存实例,只需创建适当的缓存引擎并使用它

<?php
$cache = new \ByJG\Cache\Psr16\FileSystemCacheEngine();

// And use it:
if ($cache->has('key')) {
    // Do the complex code to get the value to be cached
    $object = callComplexCode();
    
    // Save to cache
    $cache->set('key', $object);
};
$object = $cache->get('key');

更多 PSR-16 示例 在这里

PSR-6

PSR-6 实现使用上面定义的引擎。PSR-6 更啰嗦,并有一个额外的层来获取和设置缓存值。

您可以使用工厂方法之一来创建 CachePool 实例

<?php
$cachePool = \ByJG\Cache\Factory::createFilePool();

或者直接创建一个新的 CachePool 并将其传递给构造函数中的 PSR-16 兼容类的实例

$cachePool = new CachePool(new FileSystemCacheEngine());

更多 PSR-6 示例 在这里

可用工厂命令列表

注意:所有参数都是可选的

通用参数包括

  • logger:一个有效的实例,实现了 PSR/LOG 定义的 LoggerInterface
  • bufferSize:CachePool 的缓冲区大小
  • prefix:用于物理组合 KEY 的前缀名称
  • servers:一组 memcached 服务器。例如:[ '127.0.0.1:11211' ]
  • config:shmop 的特定设置。例如:[ 'max-size' => 524288, 'default-permission' => '0700' ]

记录缓存命令

您可以在构造函数中添加一个 PSR Log 兼容的实例以获取操作的日志

日志示例 在这里

使用 PSR-11 容器来检索缓存键

您可以使用 PSR-11 兼容的实例来检索缓存键。一旦定义,将只使用 PSR-11 中定义的键进行缓存。

<?php
$fileCache = new \ByJG\Cache\Psr16\FileSystemCacheEngine()
$fileCache->withKeysFromContainer(new SomePsr11Implementation());

在定义 PSR-11 容器之后,当我运行

$value = $fileCache->get('my-key');

my-key 将从 PSR-11 容器中检索,检索到的值将用作缓存键。如果它在 PSR-11 容器中不存在,将抛出异常。

安装

只需输入

composer require "byjg/cache-engine"

运行单元测试

vendor/bin/phpunit --stderr

注意:phpunit 后面的 --stderr 参数是为了允许在 SessionCacheEngine 上运行测试。

依赖关系

开源 ByJG