jdwx / array-cache
使用内存数组实现的PSR CacheInterface的简单实现。
v1.0.0
2024-04-16 20:59 UTC
Requires
- php: >=8.0.0
- psr/simple-cache: ^3.0
Requires (Dev)
- jetbrains/phpstorm-attributes: ^1.0
- phpunit/phpunit: ^9.6
README
这是一个使用内存数组实现的PSR CacheInterface的简单实现。
PSR Cache实现通常很重。它们可以提供大量用户可能不需要的后端选项,或者可能与用户未使用的特定框架紧密相关。
这个库旨在提供一个简单、轻量级且(几乎)无依赖的PSR缓存实现,可以用作默认值或占位符。
例如,在需要缓存但实现将由库用户选择的库中,这很有用。它也可以用作开发依赖项,为测试提供缓存实现。
缓存有一个经过充分测试的TTL实现,具有微秒级精度,因此如果您将某个内容设置为在1秒后过期,它将在1秒后过期,而不是0-2秒。
缓存可以使用JSON字符串或数据数组进行预填充。它还支持JSON序列化,因此如果需要,您可以将缓存持久化或检查其内容。(也适用于测试。)
要求
此库需要PHP 8.0或更高版本。psr/simple-cache是唯一的运行时依赖项。
安装
composer require jdwx/array-cache
用法
ArrayCache类实现了PSR-16 CacheInterface。
此外,它还可以预加载数据
use JDWX\ArrayCache\ArrayCache; $cache = new ArrayCache([ 'foo' => 'bar', 'baz' => 'qux' ]);
它可以序列化为JSON,这将保留TTL
$cache = new ArrayCache(); $cache->set( 'foo', 'bar' ); $cache->set( 'baz', 'qux', 5 ); $json = json_encode($cache);
它还可以预加载JSON
$st = '{"foo":"bar","baz":"qux"}'; $cache = new ArrayCache($st); assert( $cache->get('foo') === 'bar' ); assert( $cache->get('baz') === 'qux' ); // or $cache = new ArrayCache(); $cache->set( 'foo', 'bar' ); $cache->set( 'baz', 'qux', 5 ); $cache->set( 'quux', 'corge' ); $st = json_encode($cache); $cache = new ArrayCache($st); assert( $cache->get('foo') === 'bar' );
导入和导出JSON都会删除过期的条目。
稳定性
此库是稳定的,并具有完整的单元测试套件。它被认为适合在其问题域内用于生产。即,不要在应该使用Redis或symfony/cache的地方使用此库。
历史
此库是在2024年创建的,因为(其他方面出色的)cache/array-adapter不再维护。