
Security News
arXiv Is Rate Limiting Authors Following a Flood of AI Slop Submissions
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.
smart-cache-nestjs
Advanced tools
Minimal Redis caching for NestJS. Reduced to the smallest possible code.
Minimal Redis caching for NestJS v10/v11. Reduced to the smallest possible code.
Author: Nurul Islam Rimon
GitHub: https://github.com/nurulislamrimon/smart-cache-nestjs
npm install smart-cache-nestjs ioredis
// app.module.ts
import { SmartCacheModule } from 'smart-cache-nestjs';
@Module({
imports: [
SmartCacheModule.forRoot({
url: 'redis://localhost:6379'
}),
],
})
export class AppModule {}
// Inject and use
@Injectable()
class UserService {
constructor(private cache: SmartCache) {}
async findAll() {
return this.cache.remember('users', () => this.db.users.findMany());
}
async findById(id: number) {
return this.cache.remember(`user:${id}`, () => this.db.users.find(id));
}
async create(data: any) {
const user = await this.db.users.create(data);
await this.cache.invalidate('users'); // Clear list cache
return user;
}
}
cache.remember(key, fn, ttl?)The main method. Returns cached value or executes fn and caches result.
const users = await cache.remember('users', () => db.findAll(), 60);
cache.get(key), cache.set(key, value, ttl?)Basic get/set operations.
await cache.set('key', data, 30);
const data = await cache.get('key');
cache.key(...)Build cache keys with automatic prefix.
cache.key('users', { page: 1, limit: 10 })
// → "app:users:page=1:limit=10"
cache.invalidate(tag) / cache.del(key)Invalidate by tag or key.
await cache.invalidate('users');
await cache.del('user:123');
cache.stats()Get hit/miss stats.
const { hits, misses, hitRate } = cache.stats();
class UserService {
@Cache('users')
async findAll() { return this.db.findAll(); }
@Cache('user:{id}')
async findById(id: number) { return this.db.find(id); }
@Evict('users')
async create(data: any) { return this.db.create(data); }
@Evict({ tag: 'products' })
async updateProduct() { ... }
}
SmartCacheModule.forRoot({
url: 'redis://localhost:6379',
prefix: 'app', // key prefix
ttl: 60, // default TTL in seconds
memory: true, // L1 memory cache
memoryTTL: 5, // L1 TTL in seconds
memorySize: 500, // L1 max entries
})
SmartCacheModule.forRootAsync({
useFactory: (config: ConfigService) => ({
url: config.get('REDIS_URL'),
}),
inject: [ConfigService],
})
That's it. No boilerplate.
Contributions are welcome! Please see CONTRIBUTING.md for details.
MIT
FAQs
Minimal Redis caching for NestJS. Reduced to the smallest possible code.
We found that smart-cache-nestjs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.

Research
/Security News
A new GhostAction wave hits hundreds of GitHub repos, expanding CI/CD secret theft to cloud and AI credentials in source code and git history.

Research
/Security News
Tensorlake npm SDK version 0.5.144 was compromised in a ChainDrop / Shai-Hulud attack, delivering credential-stealing malware.