byjg / cache-engine
一个多功能的缓存引擎,PSR-6 和 PSR-16 的实现,具有多个驱动程序。
4.9.3
2024-08-27 20:40 UTC
Requires
- php: >=7.4
- psr/cache: ^1.0|^2.0
- psr/container: ^1.0|^1.1|^2.0
- psr/log: ^1.0|^1.1|^2.0
- psr/simple-cache: ^1.0|^2.0
Requires (Dev)
- phpunit/phpunit: 5.7.*|7.4.*|^9.5
Suggests
- ext-memcached: *
- ext-redis: *
Provides
README
一个多功能的缓存引擎,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 上运行测试。