nazg/hcache

提升性能的缓存

0.6.1 2020-07-03 00:06 UTC

README

Build Status

安装

$ composer require nazg/hcache

使用

支持apc, memcached, map, void, 文件系统

使用CacheManager

<?hh
use Nazg\HCache\Element;
use Nazg\HCache\CacheManager;

$manager = new CacheManager();
$cache = $manager->createCache('memcached');
$mc = new \Memcached('mc');
$mc->addServers([['127.0.0.1', 11211]]);
$cache->setMemcached($mc);
$cache->createCache('map')?->save('cache', new Element('testing', 0));

缓存使用

从缓存中检索项目

<?hh

  <<__Override>>
  public function fetch(string $id): mixed {

  }

检查项目是否存在

<?hh

  <<__Override>>
  public function contains(string $id): bool {

  }

将项目存储到缓存中

<?hh

  <<__Override>>
  public function save(string $id, Element $element): bool {

  }

从缓存中删除项目

删除项目

<?hh

  <<__Override>>
  public function delete(string $id): bool {

  }

刷新

<?hh

  <<__Override>>
  public function flushAll(): bool {
  }

添加自定义缓存驱动程序

<?hh

use Nazg\HCache\CacheManager;
use Nazg\HCache\CacheProvider;

$manager = new CacheManager();
$manager->addCache('null', () ==> new NullCache());
$manager->createCache('null');

class NullCache extends CacheProvider {
  <<__Override>>
  public function fetch(string $id): mixed {
    return;
  }

  <<__Override>>
  public function contains(string $id): bool {
    return false;
  }

  <<__Override>>
  public function save(string $id, Element $element): bool {
    return true;
  }

  <<__Override>>
  public function delete(string $id): bool {
    return true;
  }

  <<__Override>>
  public function flushAll(): bool {
    return true;
  }
}

使用缓存提供者

示例

FileSystemCache

<?hh
use Nazg\HCache\Element;
use Nazg\HCache\Driver\FileSystemCache;

$cache = new FileSystemCache();
$cache->setDirectory(__DIR__ . '/../storages');
$cache->save('file', new Element('testing', 0));

$cache->fetch('file');
$cache->contains('file')
$cache->flushAll();

MapCache(内存)

<?hh
use Nazg\HCache\Element;
use Nazg\HCache\Driver\MapCache;

$cache = new MapCache();
$cache->save('map', new Element('testing', 0));

MemcachedCache

<?hh
use Nazg\HCache\Element;
use Nazg\HCache\Driver\MemcachedCache;

$cache = new MemcachedCache();
$mc = new \Memcached('mc');
$mc->addServers([['127.0.0.1', 11211]]);
$cache->setMemcached($mc);
$cache->save("qwerty", new Element('testing:cache', 0));