comporu/cache

提供多种适配器的缓存接口,支持Apc, Apcu, File, Mongo, Memcache, Memcached, Mysql, Mongo, Redis。新的适配器即将到来!

5.3 2016-02-02 09:30 UTC

README

这是一个简单的缓存库。通过管理器等实现不同适配器,您可以使用并轻松更改。

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

安装

使用Composer

最佳安装方式是通过packagist,在您的项目composer.json的require中包含desarrolla2/cache

    "require": {
        // ...
        "desarrolla2/cache":  "~2.0"
    }

不使用Composer

您也可以从[Github] (https://github.com/desarrolla2/Cache)下载它,但未提供自动加载器,因此您需要使用自己的PSR-0兼容自动加载器进行注册。

使用

<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\NotCache;

$cache = new Cache(new NotCache());

$cache->set('key', 'myKeyValue', 3600);

// later ...

echo $cache->get('key');

适配器

Apcu

如果您系统中有APC缓存,请使用它。

<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Apcu;

$adapter = new Apcu();
$adapter->setOption('ttl', 3600);
$cache = new Cache($adapter);

File

如果您系统中没有其他缓存系统,或者您希望使代码更具可移植性,请使用它。

<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\File;

$cacheDir = '/tmp';
$adapter = new File($cacheDir);
$adapter->setOption('ttl', 3600);
$cache = new Cache($adapter);

Memcache

如果您系统中提供memcache,请使用它。

<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Memcache;

$adapter = new Memcache();
$cache = new Cache($adapter);

您可以在之前配置您的连接。

<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Memcache;    
use \Memcache as Backend

$backend = new Backend();
// configure it here

$cache = new Cache(new Memcache($backend));

Memcached

与Memcache适配器相同。

内存

这是最快的缓存类型,因为元素存储在内存中。缓存内存非常不稳定,当进程结束时会被移除。此外,它不会在不同进程之间共享。

内存缓存有一个“limit”选项,限制缓存中的最大项目数。

<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Memory;

$adapter = new Memory();
$adapter->setOption('ttl', 3600);
$adapter->setOption('limit', 200);
$cache = new Cache($adapter);

Mongo

使用Mongo数据库存储缓存。需要(旧版) mongo 扩展mongodb/mongodb库。

您可以将数据库或集合对象传递给构造函数。如果传递了数据库对象,则使用该DB中的items集合。

<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Mongo;

$client = new MongoClient($dsn);
$database = $client->selectDatabase($dbname);

$adapter = new Mongo($database);
$adapter->setOption('ttl', 3600);
$cache = new Cache($adapter);
<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Mongo;

$client = new MongoClient($dsn);
$database = $client->selectDatabase($dbName);
$collection = $database->selectCollection($collectionName);

$adapter = new Mongo($collection);
$adapter->setOption('ttl', 3600);
$cache = new Cache($adapter);

请注意,过期的缓存项目不会自动删除。为了保持数据库清洁,您应该创建一个TTL索引

db.items.createIndex( { "ttl": 1 }, { expireAfterSeconds: 30 } )

Mysqli

如果您系统中有mysqlnd,请使用它。

<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Mysqli;

$adapter = new Mysqli();
$adapter->setOption('ttl', 3600);
$cache = new Cache($adapter);
<?php
    
use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Mysqli;    
use \mysqli as Backend

$backend = new Backend();
// configure it here

$cache = new Cache(new Mysqli($backend));

NotCache

如果您不打算实现任何缓存适配器,这是一个适配器,将用于欺骗测试环境。

Predis

如果您系统中提供redis,请使用它。

您需要在composer文件中添加predis作为依赖项。

"require": {
    //...
    "predis/predis": "~1.0.0"
}

其他版本可能存在兼容性问题。

<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Predis;

$adapter = new Predis();
$cache = new Cache($adapter);

如果您需要配置您的predis客户端,您将实例化它并将其传递给构造函数。

<?php

use Desarrolla2\Cache\Cache;
use Desarrolla2\Cache\Adapter\Predis;
use Predis\Client as Backend

$adapter = new Predis(new Backend($options));
$cache = new Cache($adapter);

即将推出

此库将尽快实现其他适配器,如果您认为合适的,请随时发送新的适配器。

这是一个待办事项列表。

  • 清理缓存
  • MemcachedAdapter
  • 其他适配器

联系

您可以通过@desarrolla2与我联系。