ride/lib-cache

Ride框架的缓存库。

1.3 2024-06-26 07:23 UTC

This package is auto-updated.

Last update: 2024-08-26 07:41:02 UTC


README

PHP Ride框架的缓存库。

本库包含的内容

CacheItem

一个CacheItem是缓存值的容器。其实现包含检查缓存项是否有效且不过时的逻辑。

通过TaggableCacheItem接口提供了一种扩展来标记您的缓存项。

GenericCacheItem类实现了这两个接口。

CachePool

CachePool是您缓存项的后端或存储。其实现决定了如何存储您的缓存项。每个实现都有其优势和劣势。您的选择应取决于缓存使用环境和服务器环境。

可用实现(所有实现都支持可标记的缓存项)

  • ride\library\cache\pool\ApcCachePool: APC实现
  • ride\library\cache\pool\DirectoryCachePool: 每个缓存项一个文件的缓存目录
  • ride\library\cache\pool\FileCachePool: 整个池子一个文件
  • ride\library\cache\pool\MemcacheCachePool: Memcache实现
  • ride\library\cache\pool\XCacheCachePool: XCache实现

CacheControl

CacheControl提供了一个接口来暴露对您缓存的管理。

代码示例

查看以下代码示例以了解如何使用缓存

<?php

use ride\library\cache\pool\DirectoryCachePool;
use ride\library\system\System;

function foo(System $system) {
    // cache initialization
    $cacheDirectory = $system->getFileSystem()->getFile('/path/to/cache');
    $cachePool = new DirectoryCachePool($cacheDirectory);

    // cache usage
    $cacheItem = $cachePool->get('item.cache.key');
    if (!$cacheItem->isValid()) {
        // some value generation logic
        // ...

        // store value to the cache
        $cacheItem->setValue($value); // required
        $cacheItem->setTtl(60); // in seconds, optional
        $cacheItem->setTag('section'); // you can tag an item, optional

        $cachePool->set($cacheItem);
    } else {
        // retrieve value from cache
        $value = $cacheItem->getValue();
    }

    // cache flush
    $cachePool->flush(); // flush complete cache
    $cachePool->flush('item.cache.key'); // remove an item
    $cachePool->flushByTag('section'); // remove all items tagged with section
}

此代码使用从池中返回的项目来设置缓存值。

当您在其他地方预热缓存时,您可以通过池轻松创建缓存项

<?php

use ride\library\cache\pool\CachePool;

function bar(CachePool $cachePool) {
    $cacheItem = $cachePool->create('item.cache.key');
    $cacheItem->setValue('some cache value');

    $cachePool->set($cacheItem);
}

安装

您可以使用Composer来安装此库。

composer require ride/lib-cache