synthia-cache-system
Version:
Synthia Engine Cache System - 核心缓存系统实现,提供多级缓存、版本管理、性能监控等功能
495 lines (366 loc) • 11.3 kB
Markdown
# Synthia Cache System
> Synthia Engine 核心缓存系统 - 提供高效的多级缓存、版本管理、性能监控等功能
## ✨ 核心特性
- **多级缓存**: 本地 + 云端混合缓存策略
- **智能同步**: 自动同步本地和云端缓存
- **版本管理**: 智能的缓存版本控制和依赖追踪
- **性能监控**: 详细的缓存统计和性能指标
- **压缩优化**: 多种压缩算法,节省存储空间
- **智能清理**: 基于多种策略的智能缓存清理
- **插件系统**: 可扩展的插件架构
- **类型安全**: 完整的 TypeScript 类型支持
- **批量操作**: 支持批量 CRUD 操作,提升性能
- **事务支持**: 提供事务性缓存操作
## 🚀 快速开始
### 安装
```bash
npm install synthia-cache-system
```
### 基本使用
```typescript
import { SynthiaCacheManager, type CacheConfig } from 'synthia-cache-system';
// 配置缓存系统
const config: CacheConfig = {
local: {
dir: '.synthia-cache',
maxSize: 100 * 1024 * 1024, // 100MB
ttl: 7 * 24 * 60 * 60 * 1000, // 7天
compression: true,
},
cloud: {
enabled: false, // 设置为 true 启用云端缓存
provider: 'aws-s3',
bucket: 'your-bucket-name',
region: 'us-east-1',
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-secret-access-key',
},
strategy: {
level: 'local', // 'local' | 'cloud' | 'hybrid'
localFirst: true,
autoSync: false,
syncInterval: 5 * 60 * 1000, // 5分钟
},
};
// 创建缓存管理器
const cacheManager = new SynthiaCacheManager(config);
// 设置缓存
await cacheManager.set('user:123', {
id: 123,
name: 'John Doe',
email: 'john@example.com',
});
// 获取缓存
const user = await cacheManager.get('user:123');
console.log(user); // { id: 123, name: 'John Doe', email: 'john@example.com' }
```
## 📋 API 文档
### CacheManager
#### 基本操作
```typescript
// 设置缓存
await cacheManager.set(key: string, value: any, options?: Partial<CacheMeta>)
// 获取缓存
const value = await cacheManager.get(key: string)
// 删除缓存
await cacheManager.delete(key: string)
// 清空缓存
await cacheManager.clear()
```
#### 批量操作
```typescript
// 批量设置缓存
await cacheManager.setBatch(items: Array<{
key: string
value: any
options?: Partial<CacheMeta>
}>)
// 批量获取缓存
const results = await cacheManager.getBatch(keys: string[])
// 批量删除缓存
await cacheManager.deleteBatch(keys: string[])
```
#### 事务操作
```typescript
// 事务性操作缓存
await cacheManager.setTransaction(operations: Array<{
type: 'set' | 'delete'
key: string
value?: any
options?: Partial<CacheMeta>
}>)
```
#### 高级操作
```typescript
// 获取缓存统计
const stats = await cacheManager.getStats()
// 预热缓存
await cacheManager.warmup(keys: string[])
// 清理过期缓存
await cacheManager.cleanup()
// 导出缓存
const data = await cacheManager.export()
// 导入缓存
await cacheManager.import(data)
```
### CacheVersionManager
缓存版本管理器,提供版本控制和依赖追踪功能:
```typescript
import { CacheVersionManager } from 'synthia-cache-system';
const versionManager = new CacheVersionManager();
// 更新缓存版本信息
const meta = versionManager.updateCacheVersion(
'user:123',
userData,
['package.json', 'src/config.ts'],
['user', 'profile'],
'1.0.0'
);
// 检查缓存是否有效
const isValid = versionManager.isCacheValid('user:123', dependencies);
// 获取受影响的缓存键
const affectedKeys = versionManager.getAffectedCacheKeys(['src/config.ts']);
// 清理无效版本
versionManager.cleanupInvalidVersions();
```
### CacheCompressor
缓存压缩器,提供多种压缩算法:
```typescript
import { CacheCompressor } from 'synthia-cache-system';
const compressor = new CacheCompressor();
// 压缩数据
const compressed = await compressor.compress(data, 'gzip');
// 解压缩数据
const decompressed = await compressor.decompress(compressed, 'gzip');
// 选择最佳压缩算法
const result = await compressor.selectBestCompression(data);
console.log(`最佳算法: ${result.algorithm}, 压缩比: ${result.ratio}`);
// 批量压缩
const compressedItems = await compressor.compressBatch(items, 'gzip');
```
### CacheStrategyManager
缓存策略管理器,提供智能的预热和清理策略:
```typescript
import { CacheStrategyManager } from 'synthia-cache-system';
const strategyManager = new CacheStrategyManager(cacheManager);
// 预热缓存
await strategyManager.warmup(['user:123', 'user:124']);
// 智能清理
const result = await strategyManager.smartCleanup();
console.log(
`清理了 ${result.cleanedItems} 项,释放了 ${result.freedSpace} 字节`
);
// 优化策略
const recommendations = await strategyManager.optimizeStrategy();
console.log('优化建议:', recommendations.recommendations);
// 批量预热
await strategyManager.batchWarmup([
{ keys: ['user:123'], priority: 'high' },
{ keys: ['user:124', 'user:125'], priority: 'medium' },
]);
```
### CacheMetricsCollector
性能监控和指标收集器:
```typescript
import { CacheMetricsCollector } from 'synthia-cache-system';
const metricsCollector = new CacheMetricsCollector();
// 记录操作
metricsCollector.recordOperation({
type: 'get',
key: 'user:123',
timestamp: Date.now(),
duration: 15,
success: true,
});
// 生成性能报告
await metricsCollector.generateReport();
// 获取指标
const metrics = metricsCollector.getMetrics();
console.log('实时指标:', metrics.realTime);
console.log('性能指标:', metrics.performance);
console.log('优化建议:', metrics.recommendations);
// 导出指标数据
const data = metricsCollector.exportMetrics();
```
### CachePluginManager
插件管理器,提供可扩展的插件架构:
```typescript
import {
CachePluginManager,
CacheManagerWithPlugins,
} from 'synthia-cache-system';
const pluginManager = new CachePluginManager();
// 定义插件
const myPlugin: CachePlugin = {
name: 'my-plugin',
version: '1.0.0',
description: '我的缓存插件',
hooks: {
beforeGet: async (key: string) => {
console.log(`准备获取缓存: ${key}`);
},
afterSet: async (key: string, value: any) => {
console.log(`缓存设置完成: ${key}`);
},
},
};
// 注册插件
pluginManager.registerPlugin(myPlugin);
// 创建带插件的缓存管理器
const enhancedCacheManager = new CacheManagerWithPlugins(
cacheManager,
pluginManager
);
// 初始化插件
await pluginManager.initializePlugins();
// 使用增强的缓存管理器
await enhancedCacheManager.set('user:123', userData);
```
## 🎯 使用场景
### 1. 构建缓存
```typescript
// 缓存构建结果
const buildCache = new SynthiaCacheManager({
local: { dir: '.build-cache', maxSize: 500 * 1024 * 1024 },
cloud: { enabled: true, provider: 'aws-s3', bucket: 'build-cache' },
strategy: { level: 'hybrid', autoSync: true },
});
await buildCache.set('build:main', buildOutput, {
dependencies: ['src/**/*.ts', 'package.json'],
tags: ['build', 'main'],
version: '1.0.0',
});
```
### 2. API 响应缓存
```typescript
// API 响应缓存
const apiCache = new SynthiaCacheManager({
local: { dir: '.api-cache', ttl: 5 * 60 * 1000 }, // 5分钟
strategy: { level: 'local' },
});
// 批量缓存 API 响应
const apiResponses = [
{ key: 'api:users', value: usersData },
{ key: 'api:products', value: productsData },
];
await apiCache.setBatch(apiResponses);
```
### 3. 数据库查询缓存
```typescript
// 数据库查询缓存
const dbCache = new SynthiaCacheManager({
local: { dir: '.db-cache', ttl: 30 * 60 * 1000 }, // 30分钟
strategy: { level: 'local' },
});
// 事务性缓存数据库操作
await dbCache.setTransaction([
{ type: 'set', key: 'user:123', value: userData },
{ type: 'set', key: 'user:124', value: userData2 },
{ type: 'delete', key: 'user:125' },
]);
```
## 🔧 配置选项
### 本地缓存配置
```typescript
const localConfig = {
dir: '.synthia-cache', // 缓存目录
maxSize: 100 * 1024 * 1024, // 最大缓存大小 (100MB)
ttl: 7 * 24 * 60 * 60 * 1000, // 过期时间 (7天)
compression: true, // 启用压缩
};
```
### 云端缓存配置
```typescript
const cloudConfig = {
enabled: true, // 启用云端缓存
provider: 'aws-s3', // 云服务提供商
bucket: 'my-cache-bucket', // 存储桶名称
region: 'us-east-1', // 区域
accessKeyId: 'your-key-id', // 访问密钥ID
accessKeySecret: 'your-secret', // 访问密钥
};
```
### 缓存策略配置
```typescript
const strategyConfig = {
level: 'hybrid', // 缓存级别
localFirst: true, // 本地优先
autoSync: true, // 自动同步
syncInterval: 5 * 60 * 1000, // 同步间隔 (5分钟)
};
```
## 📊 性能优化
### 1. 批量操作
使用批量操作可以显著提升性能:
```typescript
// 批量设置 - 比单个设置快 3-5 倍
await cacheManager.setBatch(items);
// 批量获取 - 减少网络往返
const results = await cacheManager.getBatch(keys);
```
### 2. 压缩优化
选择合适的压缩算法可以节省存储空间:
```typescript
const compressor = new CacheCompressor();
const result = await compressor.selectBestCompression(data);
// 通常可以节省 30-70% 的存储空间
```
### 3. 智能清理
定期执行智能清理可以保持缓存性能:
```typescript
const strategyManager = new CacheStrategyManager(cacheManager);
await strategyManager.smartCleanup();
// 自动选择最佳清理策略
```
## 🛠️ 开发工具
### 性能监控
```typescript
const metricsCollector = new CacheMetricsCollector();
// 记录所有缓存操作
metricsCollector.recordOperation(operation);
// 生成详细报告
await metricsCollector.generateReport();
```
### 版本管理
```typescript
const versionManager = new CacheVersionManager();
// 检查缓存有效性
const isValid = versionManager.isCacheValid(key, dependencies);
// 获取受影响的缓存
const affectedKeys = versionManager.getAffectedCacheKeys(changedFiles);
```
## 🔍 工作原理
### 1. 缓存键生成
系统会根据以下因素生成缓存键:
- 项目路径和版本
- 依赖文件哈希
- 构建配置哈希
- 源文件变化
### 2. 缓存策略
- **本地优先**: 优先使用本地缓存
- **云端同步**: 支持云端缓存同步
- **智能失效**: 自动检测缓存失效
- **版本管理**: 多版本缓存管理
### 3. 性能优化
- **并行处理**: 并行执行缓存操作
- **批量操作**: 批量处理缓存请求
- **压缩存储**: 智能压缩减少存储空间
- **预热机制**: 智能预热常用缓存
## 🧪 测试
```bash
# 运行测试
npm test
# 运行特定测试
npm test -- --testNamePattern="LocalCache"
# 运行测试并生成覆盖率报告
npm test -- --coverage
```
## 📝 示例
查看 `examples/` 目录中的完整示例:
- `basic-usage.ts` - 基本使用示例
- `cloud-cache.ts` - 云端缓存示例
- `plugin-example.ts` - 插件开发示例
## 🤝 贡献
欢迎贡献代码!请查看 [贡献指南](../../CONTRIBUTING.md) 了解详细信息。
## 📄 许可证
MIT License - 查看 [LICENSE](../../LICENSE) 文件了解详细信息。