Fix redis setup
This commit is contained in:
@@ -34,7 +34,7 @@
|
|||||||
"bcrypt": "^5.1.1",
|
"bcrypt": "^5.1.1",
|
||||||
"bull": "^4.11.5",
|
"bull": "^4.11.5",
|
||||||
"cache-manager": "^5.3.1",
|
"cache-manager": "^5.3.1",
|
||||||
"cache-manager-redis-store": "^3.0.1",
|
"cache-manager-redis-yet": "^4.1.2",
|
||||||
"hbs": "^4.2.0",
|
"hbs": "^4.2.0",
|
||||||
"minio": "^7.1.3",
|
"minio": "^7.1.3",
|
||||||
"open-graph-scraper": "^6.3.0",
|
"open-graph-scraper": "^6.3.0",
|
||||||
|
@@ -16,9 +16,9 @@ import { PrometheusModule } from '@willsoto/nestjs-prometheus';
|
|||||||
import { MinioModule } from './minio/minio.module';
|
import { MinioModule } from './minio/minio.module';
|
||||||
import { KvModule } from './kv/kv.module';
|
import { KvModule } from './kv/kv.module';
|
||||||
import { BullModule } from '@nestjs/bull';
|
import { BullModule } from '@nestjs/bull';
|
||||||
import type { RedisClientOptions } from 'redis';
|
|
||||||
import { redisStore } from 'cache-manager-redis-store';
|
|
||||||
import { ScheduleModule } from '@nestjs/schedule';
|
import { ScheduleModule } from '@nestjs/schedule';
|
||||||
|
import { RedisClientOptions } from 'redis';
|
||||||
|
import { redisStore } from 'cache-manager-redis-yet';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -27,31 +27,34 @@ import { ScheduleModule } from '@nestjs/schedule';
|
|||||||
isGlobal: true,
|
isGlobal: true,
|
||||||
load: [configuration],
|
load: [configuration],
|
||||||
}),
|
}),
|
||||||
// CacheModule.registerAsync<RedisClientOptions>({
|
CacheModule.registerAsync<RedisClientOptions>({
|
||||||
// isGlobal: true,
|
isGlobal: true,
|
||||||
// imports: [ConfigModule],
|
inject: [ConfigService],
|
||||||
// inject: [ConfigService],
|
imports: [ConfigModule],
|
||||||
// useFactory: async (configService: ConfigService) => ({
|
useFactory: async (configService: ConfigService) => ({
|
||||||
// store: redisStore as unknown as CacheStoreFactory,
|
store: redisStore,
|
||||||
// ttl: configService.get<number>('CACHE_TTL', 5),
|
socket: {
|
||||||
// // Store-specific configuration:
|
host: configService.get<string>('redis.host'),
|
||||||
// password: configService.get<string>('redis.pass', ''),
|
port: configService.get<number>('redis.port'),
|
||||||
// host: configService.get<string>('redis.host', 'localhost'),
|
},
|
||||||
// port: configService.get<number>('redis.port', 6379),
|
database: configService.get<number>('redis.db'),
|
||||||
// db: configService.get<number>('redis.db', 1),
|
password: configService.get<string>('redis.password'),
|
||||||
// }),
|
}),
|
||||||
// }),
|
}),
|
||||||
BullModule.forRootAsync({
|
BullModule.forRootAsync({
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
inject: [ConfigService],
|
inject: [ConfigService],
|
||||||
useFactory: async (configService: ConfigService) => ({
|
useFactory: async (configService: ConfigService) => {
|
||||||
|
const config = {
|
||||||
redis: {
|
redis: {
|
||||||
password: configService.get<string>('redis.pass', ''),
|
password: configService.get<string>('redis.password'),
|
||||||
host: configService.get<string>('redis.host', 'localhost'),
|
host: configService.get<string>('redis.host'),
|
||||||
port: configService.get<number>('redis.port', 6379),
|
port: configService.get<number>('redis.port'),
|
||||||
db: configService.get<number>('redis.db', 1),
|
db: configService.get<number>('redis.db'),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return config;
|
||||||
},
|
},
|
||||||
}),
|
|
||||||
}),
|
}),
|
||||||
PrometheusModule.register({
|
PrometheusModule.register({
|
||||||
defaultLabels: {
|
defaultLabels: {
|
||||||
|
@@ -12,7 +12,7 @@ export default () => ({
|
|||||||
password: process.env.IRC_PASSWORD ?? '',
|
password: process.env.IRC_PASSWORD ?? '',
|
||||||
},
|
},
|
||||||
redis: {
|
redis: {
|
||||||
host: process.env.REDIS_HOST ?? 's3.hooli.co',
|
host: process.env.REDIS_HOST ?? 'redis-master',
|
||||||
port: parseInt(process.env.REDIS_PORT ?? '6379'),
|
port: parseInt(process.env.REDIS_PORT ?? '6379'),
|
||||||
password: process.env.REDIS_PASS ?? '',
|
password: process.env.REDIS_PASS ?? '',
|
||||||
db: parseInt(process.env.REDIS_DB ?? '1'),
|
db: parseInt(process.env.REDIS_DB ?? '1'),
|
||||||
|
@@ -2,9 +2,15 @@ import { Module } from '@nestjs/common';
|
|||||||
import { KvService } from './kv.service';
|
import { KvService } from './kv.service';
|
||||||
import { KvController } from './kv.controller';
|
import { KvController } from './kv.controller';
|
||||||
import { MinioService } from 'src/minio/minio.service';
|
import { MinioService } from 'src/minio/minio.service';
|
||||||
|
import { BullModule } from '@nestjs/bull';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
providers: [KvService, MinioService],
|
providers: [KvService, MinioService],
|
||||||
|
imports: [
|
||||||
|
BullModule.registerQueue({
|
||||||
|
name: 'kv',
|
||||||
|
}),
|
||||||
|
],
|
||||||
controllers: [KvController],
|
controllers: [KvController],
|
||||||
})
|
})
|
||||||
export class KvModule {}
|
export class KvModule {}
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
|
import { InjectQueue } from '@nestjs/bull';
|
||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import { Queue } from 'bull';
|
||||||
import { UploadedObjectInfo } from 'minio';
|
import { UploadedObjectInfo } from 'minio';
|
||||||
import { MinioService } from 'src/minio/minio.service';
|
import { MinioService } from 'src/minio/minio.service';
|
||||||
|
|
||||||
@@ -10,7 +12,10 @@ export class KvService {
|
|||||||
private readonly kvMetadataPath = `${this.kvPrefix}/${this.kvMetadataFileName}`;
|
private readonly kvMetadataPath = `${this.kvPrefix}/${this.kvMetadataFileName}`;
|
||||||
private readonly logger: Logger = new Logger(KvService.name);
|
private readonly logger: Logger = new Logger(KvService.name);
|
||||||
|
|
||||||
constructor(private readonly minioService: MinioService) {}
|
constructor(
|
||||||
|
private readonly minioService: MinioService,
|
||||||
|
@InjectQueue('kv') private kvProcessingQueue: Queue,
|
||||||
|
) {}
|
||||||
|
|
||||||
public generateFilePath(namespace: string, key: string): string {
|
public generateFilePath(namespace: string, key: string): string {
|
||||||
return `${this.kvPrefix}/${namespace}/${key}`;
|
return `${this.kvPrefix}/${namespace}/${key}`;
|
||||||
@@ -114,9 +119,11 @@ export class KvService {
|
|||||||
...extraData,
|
...extraData,
|
||||||
secretKey: this.generateSecretKey(),
|
secretKey: this.generateSecretKey(),
|
||||||
claimed: new Date().toISOString(),
|
claimed: new Date().toISOString(),
|
||||||
|
namespace,
|
||||||
};
|
};
|
||||||
await this.setMetadataFile(Buffer.from(JSON.stringify(metadata)));
|
await this.setMetadataFile(Buffer.from(JSON.stringify(metadata)));
|
||||||
this.logger.verbose(`Claimed namespace ${namespace}`);
|
this.logger.verbose(`Claimed namespace ${namespace}`);
|
||||||
|
this.kvProcessingQueue.add('namespaceModeration', metadata[namespace]);
|
||||||
return metadata[namespace];
|
return metadata[namespace];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +146,7 @@ export class KvService {
|
|||||||
throw new Error('Incorrect secret key for namespace');
|
throw new Error('Incorrect secret key for namespace');
|
||||||
}
|
}
|
||||||
this.logger.verbose(`Setting ${namespace}/${key}`);
|
this.logger.verbose(`Setting ${namespace}/${key}`);
|
||||||
return await this.minioService.uploadBuffer(
|
const uploadResult = await this.minioService.uploadBuffer(
|
||||||
this.kvBucketName,
|
this.kvBucketName,
|
||||||
this.generateFilePath(namespace, key),
|
this.generateFilePath(namespace, key),
|
||||||
Buffer.from(value),
|
Buffer.from(value),
|
||||||
@@ -149,6 +156,7 @@ export class KvService {
|
|||||||
...options,
|
...options,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
return uploadResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async delete(namespace: string, key: string): Promise<void> {
|
public async delete(namespace: string, key: string): Promise<void> {
|
||||||
|
33
yarn.lock
33
yarn.lock
@@ -924,12 +924,12 @@
|
|||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
tslib "^2.6.0"
|
tslib "^2.6.0"
|
||||||
|
|
||||||
"@redis/bloom@1.2.0":
|
"@redis/bloom@1.2.0", "@redis/bloom@^1.2.0":
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71"
|
resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71"
|
||||||
integrity sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==
|
integrity sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==
|
||||||
|
|
||||||
"@redis/client@1.5.12":
|
"@redis/client@1.5.12", "@redis/client@^1.5.8":
|
||||||
version "1.5.12"
|
version "1.5.12"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.5.12.tgz#4c387727992152aea443b869de0ebb697f899187"
|
resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.5.12.tgz#4c387727992152aea443b869de0ebb697f899187"
|
||||||
integrity sha512-/ZjE18HRzMd80eXIIUIPcH81UoZpwulbo8FmbElrjPqH0QC0SeIKu1BOU49bO5trM5g895kAjhvalt5h77q+4A==
|
integrity sha512-/ZjE18HRzMd80eXIIUIPcH81UoZpwulbo8FmbElrjPqH0QC0SeIKu1BOU49bO5trM5g895kAjhvalt5h77q+4A==
|
||||||
@@ -938,22 +938,22 @@
|
|||||||
generic-pool "3.9.0"
|
generic-pool "3.9.0"
|
||||||
yallist "4.0.0"
|
yallist "4.0.0"
|
||||||
|
|
||||||
"@redis/graph@1.1.1":
|
"@redis/graph@1.1.1", "@redis/graph@^1.1.0":
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.1.1.tgz#8c10df2df7f7d02741866751764031a957a170ea"
|
resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.1.1.tgz#8c10df2df7f7d02741866751764031a957a170ea"
|
||||||
integrity sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==
|
integrity sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==
|
||||||
|
|
||||||
"@redis/json@1.0.6":
|
"@redis/json@1.0.6", "@redis/json@^1.0.4":
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.6.tgz#b7a7725bbb907765d84c99d55eac3fcf772e180e"
|
resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.6.tgz#b7a7725bbb907765d84c99d55eac3fcf772e180e"
|
||||||
integrity sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==
|
integrity sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==
|
||||||
|
|
||||||
"@redis/search@1.1.6":
|
"@redis/search@1.1.6", "@redis/search@^1.1.3":
|
||||||
version "1.1.6"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.1.6.tgz#33bcdd791d9ed88ab6910243a355d85a7fedf756"
|
resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.1.6.tgz#33bcdd791d9ed88ab6910243a355d85a7fedf756"
|
||||||
integrity sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==
|
integrity sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==
|
||||||
|
|
||||||
"@redis/time-series@1.0.5":
|
"@redis/time-series@1.0.5", "@redis/time-series@^1.0.4":
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad"
|
resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad"
|
||||||
integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==
|
integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==
|
||||||
@@ -1967,14 +1967,21 @@ bytes@3.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
||||||
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
||||||
|
|
||||||
cache-manager-redis-store@^3.0.1:
|
cache-manager-redis-yet@^4.1.2:
|
||||||
version "3.0.1"
|
version "4.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/cache-manager-redis-store/-/cache-manager-redis-store-3.0.1.tgz#8eeb211212763d04cef4058666182d624f714299"
|
resolved "https://registry.yarnpkg.com/cache-manager-redis-yet/-/cache-manager-redis-yet-4.1.2.tgz#fa04df1a979a42585393a7a9918168978a7211ec"
|
||||||
integrity sha512-o560kw+dFqusC9lQJhcm6L2F2fMKobJ5af+FoR2PdnMVdpQ3f3Bz6qzvObTGyvoazQJxjQNWgMQeChP4vRTuXQ==
|
integrity sha512-pM2K1ZlOv8gQpE1Z5mcDrfLj5CsNKVRiYua/SZ12j7LEDgfDeFVntI6JSgIw0siFSR/9P/FpG30scI3frHwibA==
|
||||||
dependencies:
|
dependencies:
|
||||||
redis "^4.3.1"
|
"@redis/bloom" "^1.2.0"
|
||||||
|
"@redis/client" "^1.5.8"
|
||||||
|
"@redis/graph" "^1.1.0"
|
||||||
|
"@redis/json" "^1.0.4"
|
||||||
|
"@redis/search" "^1.1.3"
|
||||||
|
"@redis/time-series" "^1.0.4"
|
||||||
|
cache-manager "^5.2.2"
|
||||||
|
redis "^4.6.7"
|
||||||
|
|
||||||
cache-manager@^5.3.1:
|
cache-manager@^5.2.2, cache-manager@^5.3.1:
|
||||||
version "5.3.1"
|
version "5.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-5.3.1.tgz#80e4edd593b2d7f7b2b2199dc6fbb4748432bc47"
|
resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-5.3.1.tgz#80e4edd593b2d7f7b2b2199dc6fbb4748432bc47"
|
||||||
integrity sha512-9HP6nc1ZqyZgcVEpy5XS2ns9MYE6cPEM6InA1wQhR6M7GviJzLH2NTFYnf3NEfRmLE351NCSkDo2VISX8dlG+w==
|
integrity sha512-9HP6nc1ZqyZgcVEpy5XS2ns9MYE6cPEM6InA1wQhR6M7GviJzLH2NTFYnf3NEfRmLE351NCSkDo2VISX8dlG+w==
|
||||||
@@ -5033,7 +5040,7 @@ redis-parser@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
redis-errors "^1.0.0"
|
redis-errors "^1.0.0"
|
||||||
|
|
||||||
redis@^4.3.1, redis@^4.6.11:
|
redis@^4.6.11, redis@^4.6.7:
|
||||||
version "4.6.11"
|
version "4.6.11"
|
||||||
resolved "https://registry.yarnpkg.com/redis/-/redis-4.6.11.tgz#fad85e104545228f212259fd557c3e4f8eafcd3d"
|
resolved "https://registry.yarnpkg.com/redis/-/redis-4.6.11.tgz#fad85e104545228f212259fd557c3e4f8eafcd3d"
|
||||||
integrity sha512-kg1Lt4NZLYkAjPOj/WcyIGWfZfnyfKo1Wg9YKVSlzhFwxpFIl3LYI8BWy1Ab963LLDsTz2+OwdsesHKljB3WMQ==
|
integrity sha512-kg1Lt4NZLYkAjPOj/WcyIGWfZfnyfKo1Wg9YKVSlzhFwxpFIl3LYI8BWy1Ab963LLDsTz2+OwdsesHKljB3WMQ==
|
||||||
|
Reference in New Issue
Block a user