davidecesarano / embryo-cache
PSR-16 简单缓存实现,使用 PSR Stream。
1.0.1
2021-01-08 15:39 UTC
Requires
- php: >=7.1
- davidecesarano/embryo-emitter: dev-master
- davidecesarano/embryo-http: dev-master
- psr/simple-cache: 1.0.1
Requires (Dev)
- phpstan/phpstan: ^0.12.54
This package is auto-updated.
Last update: 2024-09-08 23:50:27 UTC
README
一个最小的PSR-16缓存实现,使用文件流系统。
要求
- PHP >= 7.1
- 一个PSR-7 http消息实现和一个PSR-17 http工厂实现(例如Embryo-Http)
- 一个PSR响应发射器(例如Embryo-Emitter)
安装
使用Composer
$ composer require davidecesarano/embryo-cache
使用方法
设置Response
和Emitter
对象。之后,通过传递缓存目录路径来设置Cache
对象。
use Embryo\Cache\Cache; use Embryo\Http\Emitter\Emitter; use Embryo\Http\Factory\ResponseFactory; $emitter = new Emitter; $response = (new ResponseFactory)->createResponse(200); $cachePath = __DIR__.DIRECTORY_SEPARATOR.'cache'; $cache = new Cache($cachePath); if (!$cache->has('test')) { $cache->set('test', 'Hello World!', 3600); } $body = $response->getBody(); $body->write($cache->get('test', 'Default value!')); $response = $response->withBody($body); $emitter->emit($response);
在这个示例中,我们检查项目缓存test
是否存在;如果不存在,我们使用值Hello World!
和生存时间(TTL)为3600
秒设置test
项目缓存。之后,如果项目缓存不存在,我们获取默认值的test
项目缓存。
示例
您可以通过内置的PHP服务器快速测试此功能,访问https://:8000。
$ cd example
$ php -S localhost:8000
选项
setDefaultTtl($ttl)
您可以为默认过期TTL时间设置。$ttl必须是一个整数或一个DateInterval
对象。
集合
检索数据
您可以从缓存中检索项目,并且您也可以将默认值作为第二个参数传递给get
方法。
$cache->get('key', 'default');
存储数据
使用set
方法可以设置新的值到缓存中,可以可选地设置过期TTL时间。
$cache->set('key', 'value', 3600);
删除数据
delete
方法将从缓存中删除数据。如果您想从缓存中删除所有数据,您可以使用clear
方法。
$cache->delete('key'); $cache->clear();
检索多个数据
您可以从缓存中检索多个项目,并且您也可以将默认值作为第二个参数传递给getMultiple
方法。
$cache->getMultiple(['key1', 'key2'], 'default');
存储多个数据
setMultiple
方法可以用于将多个值设置到缓存中,可以可选地设置过期TTL时间。
$cache->setMultiple([ 'key1' => 'value', 'key2' => 'value' ], 3600);
删除多个数据
deleteMultiple
方法将从缓存中删除项目。
$cache->deleteMultiple(['key1', 'key2']);
确定缓存中是否存在项目
要确定项目是否存在于缓存中,您可以使用has
方法。如果项目存在并且不是false
,则has方法返回true
。
if ($cache->has('key')) { //... }