desarrolla2 / cache
为多个适配器提供缓存接口,支持Apc、Apcu、File、Mongo、Memcache、Memcached、Mysql、Mongo、Redis。
Requires
- php: >=7.2.0
- psr/simple-cache: ^1.0
Requires (Dev)
- ext-apcu: *
- ext-json: *
- ext-memcached: *
- ext-mysqli: *
- cache/integration-tests: dev-master
- mikey179/vfsstream: v1.6.8
- mongodb/mongodb: ^1.3
- phpstan/phpstan: ^0.12.29
- phpunit/phpunit: ^8.3 || ^9.0
- predis/predis: ~1.0.0
- symfony/phpunit-bridge: ^5.2
Provides
This package is auto-updated.
Last update: 2024-09-04 17:41:28 UTC
README
简单缓存库,使用不可变对象实现PSR-16标准。
缓存通常在整个应用程序中使用。不可变性确保在一个位置修改缓存行为不会因为无关代码的变化而导致意外行为。
Desarolla2 Cache的目标是提供最完整、最准确和性能最好的PSR-16实现。
安装
composer require desarrolla2/cache
使用
use Desarrolla2\Cache\Memory as Cache; $cache = new Cache(); $value = $cache->get('key'); if (!isset($value)) { $value = do_something(); $cache->set('key', $value, 3600); } echo $value;
适配器
以下实现允许您组合缓存适配器。
选项
您可以使用withOption
或withOptions
方法为缓存设置选项。请注意,所有缓存对象都是不可变的,设置选项会创建一个新的对象。
TTL
所有缓存实现都支持ttl
选项。这设置了缓存将存活的时间(以秒为单位)。默认为1小时(3600秒)。
将TTL设置为0或负数,表示缓存应该永远存活。
方法
PSR-16方法
每个缓存实现都有以下Psr\SimpleCache\CacheInterface
方法
get(string $key [, mixed $default])
检索与提供的键对应的值
has(string $key)
检索是否存在与提供的键对应的值
set(string $key, mixed $value [, int $ttl])
将值添加到缓存中,并使用唯一键
delete(string $key)
从缓存中删除值
clear()
清除所有缓存
getMultiple(array $keys)
通过唯一键获取多个缓存项
setMultiple(array $values [, int $ttl])
将一组键 => 值对持久化到缓存中
deleteMultiple(array $keys)
在单个操作中删除多个缓存项
附加方法
Desarrolla2\Cache\CacheInterface
还有以下方法
withOption(string $key, string $value)
为实现设置选项。创建一个新实例。
withOptions(array $options)
为实现设置多个选项。创建一个新实例。
getOption(string $key)
获取实现的选项。
打包器
缓存对象通常包含一个Desarrolla2\Cache\Packer\PackerInterface
对象。默认情况下,打包使用serialize
和unserialize
。
可用的打包器有
SerializePacker
使用serialize
和unserialize
JsonPacker
使用json_encode
和json_decode
NopPacker
不进行打包MongoDBBinaryPacker
使用serialize
和unserialize
以存储为BSON Binary
与PSR-16不兼容的打包器
JsonPacker
不完全符合PSR-16,因为打包和解包一个对象可能不会产生相同类的对象。
NopPacker
适用于仅缓存字符串数据(如HTML输出)或缓存后端支持结构化数据的情况。当用于存储对象时可能会产生意外的结果。
贡献者
Twitter: @desarrolla2
Twitter: @ArnoldDaniels