This commit is contained in:
2026-06-30 10:33:56 +08:00
commit 6e047dc0a5
607 changed files with 65966 additions and 0 deletions
@@ -0,0 +1,16 @@
import { Global, Module } from '@nestjs/common';
import Redis from 'ioredis';
import { RedisService } from './redis.service';
@Global()
@Module({
providers: [
{
provide: 'REDIS_CLIENT',
useFactory: () => new Redis(process.env.REDIS_URL || 'redis://localhost:6379'),
},
RedisService,
],
exports: ['REDIS_CLIENT', RedisService],
})
export class RedisModule {}
@@ -0,0 +1,29 @@
import { Inject, Injectable } from '@nestjs/common';
import Redis from 'ioredis';
@Injectable()
export class RedisService {
constructor(@Inject('REDIS_CLIENT') private readonly redis: Redis) {}
get client() {
return this.redis;
}
async setJson(key: string, value: unknown, ttlSeconds?: number) {
const payload = JSON.stringify(value);
if (ttlSeconds) {
await this.redis.set(key, payload, 'EX', ttlSeconds);
} else {
await this.redis.set(key, payload);
}
}
async getJson<T>(key: string): Promise<T | null> {
const raw = await this.redis.get(key);
return raw ? (JSON.parse(raw) as T) : null;
}
async del(key: string) {
await this.redis.del(key);
}
}