purpleharmonie / cache
一个综合的PSR-16缓存应用程序
Requires
- predis/predis: ^2.2
- psr/simple-cache: ^3.0
This package is not auto-updated.
Last update: 2024-09-27 15:36:53 UTC
README
概述
紫光缓存库为您的应用程序提供了一个灵活的缓存机制,支持各种缓存类型,包括Redis、基于文件的缓存和内存缓存。这个库遵循PSR-16缓存接口以确保标准化和易于使用。
安装
要安装紫光缓存库,请使用Composer
composer require purpleharmonie/cache
缓存类型
Redis缓存
使用Redis进行存储的缓存实现。
文件缓存
使用文件系统进行存储的缓存实现。
内存缓存
使用应用程序内存进行存储的缓存实现。
工厂类:PurpleCacheFactory
PurpleCacheFactory
类负责创建不同缓存类型的实例。它提供了一个方法createCache
,该方法接受缓存类型和一个可选的配置数组。
用法
创建Redis缓存
use Purple\Libs\Cache\Factory\PurpleCacheFactory; $redisCache = PurpleCacheFactory::createCache('redis', [ 'redis' => ['host' => 'localhost', 'port' => 6379], 'defaultTtl' => 7200, 'maxSize' => 1000, 'evictionPolicy' => 'LFU' ]);
创建文件缓存
$fileCache = PurpleCacheFactory::createCache('file', [ 'cacheDir' => '/path/to/cache', 'defaultTtl' => 3600, 'maxSize' => 500, 'evictionPolicy' => 'LRU' ]);
创建内存缓存
$memoryCache = PurpleCacheFactory::createCache('memory', [ 'defaultTtl' => 1800, 'maxSize' => 200, 'evictionPolicy' => 'LFU' ]);
缓存接口
PSR-16方法
所有缓存实现(RedisCache、FileCache、InMemoryCache)都遵循Psr\SimpleCache\CacheInterface
。以下是可用的方法:
get($key, $default = null)
set($key, $value, $ttl = null): bool
delete($key): bool
clear(): bool
getMultiple($keys, $default = null): iterable
setMultiple($values, $ttl = null): bool
deleteMultiple($keys): bool
has($key): bool
示例:FileCache
FileCache
类提供了一个基于文件的缓存机制。
构造函数
public function __construct(string $cacheDir, int $defaultTtl = 3600, int $maxSize = 100, string $evictionPolicy = 'LRU')
- $cacheDir:缓存文件存储的目录。
- $defaultTtl:缓存项的默认生存时间(TTL)。
- $maxSize:缓存中的最大项目数。
- $evictionPolicy:驱逐策略(
LRU
或LFU
)。
方法
get($key, $default = null)
检索缓存项的值。
set($key, $value, $ttl = null): bool
将值存储在缓存中。
delete($key): bool
删除缓存项。
clear(): bool
清除整个缓存。
getMultiple($keys, $default = null): iterable
检索多个缓存项。
setMultiple($values, $ttl = null): bool
在缓存中存储多个值。
deleteMultiple($keys): bool
删除多个缓存项。
has($key): bool
检查缓存项是否存在。
getMetrics(): array
返回缓存指标,如命中次数、未命中次数、命中率、项目数。
配置
Redis缓存配置
redis
:包含Redis连接参数的数组。defaultTtl
:缓存项的默认生存时间。maxSize
:缓存中的最大项目数。evictionPolicy
:驱逐策略(LRU
或LFU
)。
文件缓存配置
cacheDir
:存储缓存文件的目录。defaultTtl
:缓存项的默认生存时间。maxSize
:缓存中的最大项目数。evictionPolicy
:驱逐策略(LRU
或LFU
)。
内存缓存配置
defaultTtl
:缓存项的默认生存时间。maxSize
:缓存中的最大项目数。evictionPolicy
:驱逐策略(LRU
或LFU
)。
驱逐策略
LRU(最近最少使用)
首先驱逐最不常访问的项。
LFU(最少使用频率)
首先驱逐最少使用频率的项。
元数据管理
FileCache
类管理元数据以跟踪缓存项的访问和频率。元数据存储在缓存目录内的文件(metadata.php
)中。
方法
loadMetadata()
:从元数据文件加载元数据。saveMetadata()
:将元数据保存到元数据文件。updateMetadata(string $key, string $operation)
:更新缓存项的元数据。
指标
每个缓存实现的getMetrics()
方法返回一个缓存指标数组
hitCount
:缓存命中的次数。missCount
:缓存未命中的次数。hitRatio
:命中与总请求数的比率。itemCount
:缓存中项目数量。
示例
$metrics = $fileCache->getMetrics(); echo "Hit Count: " . $metrics['hitCount'] . "\n"; echo "Miss Count: " . $metrics['missCount'] . "\n"; echo "Hit Ratio: " . $metrics['hitRatio'] . "\n"; echo "Item Count: " . $metrics['itemCount'] . "\n";
错误处理
该库对于无效的缓存键和配置会抛出InvalidArgumentException
异常。请确保在您的应用程序代码中处理这些异常。
结论
紫色缓存库提供了一种健壮的缓存解决方案,支持Redis、基于文件和内存缓存。通过遵循PSR-16标准,它确保了与其他库和框架的互操作性和易于集成。根据您应用程序的需求配置和使用最适合的缓存,并使用淘汰策略和指标跟踪来有效地管理缓存。