@galaxy-stack/orbit-cache
v0.1.9
Published
Caching module for Orbit framework
Readme
@galaxy-stack/orbit-cache
Mô tả
Module caching cho Orbit với hỗ trợ Memory store và Redis store.
Tính năng chính
1. Cache Stores
- MemoryStore: In-memory cache (mặc định)
- RedisStore: Redis-based cache
2. Cache Decorators
import { Cacheable, CacheEvict, CachePut } from '@galaxy-stack/orbit-cache';
class UserService {
@Cacheable({ key: 'user:{id}', ttl: 3600 })
async getUser(id: number) {
return await this.db.findUser(id);
}
@CacheEvict({ key: 'user:{id}' })
async updateUser(id: number, data: any) {
return await this.db.updateUser(id, data);
}
@CachePut({ key: 'user:{id}', ttl: 3600 })
async refreshUser(id: number) {
return await this.db.findUser(id);
}
}Cấu hình Module
Memory Store
import { CacheModule } from '@galaxy-stack/orbit-cache';
@Module({
imports: [
CacheModule.forRoot({
store: 'memory',
ttl: 300, // 5 phút
max: 100, // Tối đa 100 items
}),
],
})
class AppModule {}Redis Store
CacheModule.forRoot({
store: 'redis',
url: 'redis://localhost:6379',
ttl: 3600,
keyPrefix: 'myapp:',
})Async Configuration
CacheModule.forRootAsync({
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
store: config.get('CACHE_STORE'),
url: config.get('REDIS_URL'),
}),
})Cache Service
import { CacheService } from '@galaxy-stack/orbit-cache';
class MyService {
constructor(private cache: CacheService) {}
async getData() {
// Get from cache
const cached = await this.cache.get('my-key');
if (cached) return cached;
// Set to cache
const data = await fetchData();
await this.cache.set('my-key', data, 3600);
return data;
}
async clearCache() {
await this.cache.del('my-key');
// hoặc
await this.cache.reset(); // Clear all
}
}Cache Methods
interface CacheService {
get<T>(key: string): Promise<T | null>;
set(key: string, value: any, ttl?: number): Promise<void>;
del(key: string): Promise<void>;
has(key: string): Promise<boolean>;
reset(): Promise<void>;
keys(pattern?: string): Promise<string[]>;
}TTL (Time To Live)
- Tính bằng giây
0= không expire- Mặc định: 300 (5 phút)
