为多个适配器提供缓存接口,支持Apc、Apcu、File、Mongo、Memcache、Memcached、Mysql、Mongo、Redis。

v3.0.2 2022-03-27 23:04 UTC

README

简单缓存库,使用不可变对象实现PSR-16标准。

life-is-hard-cache-is

缓存通常在整个应用程序中使用。不可变性确保在一个位置修改缓存行为不会因为无关代码的变化而导致意外行为。

Desarolla2 Cache的目标是提供最完整、最准确和性能最好的PSR-16实现。

Latest version Latest version Software License Build Status Coverage Status Quality Score Total Downloads Today Downloads Gitter

安装

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;

适配器

以下实现允许您组合缓存适配器。

选项

您可以使用withOptionwithOptions方法为缓存设置选项。请注意,所有缓存对象都是不可变的,设置选项会创建一个新的对象。

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对象。默认情况下,打包使用serializeunserialize

可用的打包器有

  • SerializePacker使用serializeunserialize
  • JsonPacker使用json_encodejson_decode
  • NopPacker不进行打包
  • MongoDBBinaryPacker使用serializeunserialize以存储为BSON Binary

与PSR-16不兼容的打包器

JsonPacker不完全符合PSR-16,因为打包和解包一个对象可能不会产生相同类的对象。

NopPacker 适用于仅缓存字符串数据(如HTML输出)或缓存后端支持结构化数据的情况。当用于存储对象时可能会产生意外的结果。

贡献者

Daniel González Twitter: @desarrolla2
Arnold Daniels Twitter: @ArnoldDaniels