ride / lib-cache
Ride框架的缓存库。
1.3
2024-06-26 07:23 UTC
Requires
- ride/lib-system: ^1.0.0
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