Код: Выделить всё
@Cacheable(key = "'cache_user_id_' + #session.id", cacheNames = "doubleCachingCache")
public Optional save(@Nonnull Session session) {
return Optional.of(sessionRepository.save(session));
}

Теперь я хочу получить данные, хранящиеся в Redis, из Приложение NestJS использует идентификаторы, и именно здесь у меня возникла проблема.
На самом деле я следовал документу NestJS Redis, в частности разделу, посвященному использованию альтернативных хранилищ кэша. У меня та же конфигурация, что и в документации, но я не могу получить данные из Redis с идентификатором кеша.
Вот фрагменты кода в NestJS. Для ясности большая часть кода опущена.
// Модуль Redis
Код: Выделить всё
import {CacheModule} from "@nestjs/cache-manager";
import KeyvRedis from "@keyv/redis"
@Module({
imports: [
CacheModule.registerAsync({
useFactory: async () => {
return {
stores: [
new KeyvRedis('redis://localhost:6379'),
],
};
},
}),
],
providers: [],
exports: []
})
export class RedisModule {}
Код: Выделить всё
import { CACHE_MANAGER } from "@nestjs/cache-manager";
import {Inject, Injectable } from "@nestjs/common";
import { Cache } from "cache-manager";
@Injectable()
export class CacheService {
constructor(@Inject(CACHE_MANAGER) private readonly cache: Cache) {}
async get(key: string) {
return await this.cache.get(key);
}
async set(key: string, value: object) {
await this.cache.set(key, value, 0);
}
delete(key: string) {
this.cache.del(key);
}
}
Код: Выделить всё
@Module({
imports: [
CacheModule.register({isGlobal: true}),
RedisModule,
],
providers: [
CacheService,
],
exports: [
CacheService
],
})
export class SharedModule {
}
Код: Выделить всё
@Controller()
export class AppController {
constructor(private cacheService: CacheService) {}
@Get("redis-cache")
getDataFromRedis() {
// The id is the first id in the screenshot
const dataFromRedis = this.cacheService.get("doubleCachingCache::cache_user_id_34929554-55c0-43cc-8d1f-9c4937df1b76");
// This line displays undefined to the console though the data is in Redis
console.log(dataFromRedis);
}
}
Код: Выделить всё
@Module({
imports: [
SharedModule,
],
providers: [
],
controllers: [
AppController
],
})
export class AppModule {
}
Я также пытался сохранить данные в Redis из приложения NestJS, но это также не сработало, потому что когда я вхожу в консоль Redis, я не вижу никакого нового идентификатора.
Подробнее здесь: https://stackoverflow.com/questions/798 ... from-redis
Мобильная версия