31 lines
906 B
TypeScript
31 lines
906 B
TypeScript
import { RedisClientType, createClient } from 'redis';
|
|
import { StorageInterface } from "./StorageInterface";
|
|
|
|
let client: RedisClientType;
|
|
|
|
/**
|
|
* Implementace úložiště využívající Redis server.
|
|
*/
|
|
export default class RedisStorage implements StorageInterface {
|
|
constructor() {
|
|
const HOST = process.env.REDIS_HOST ?? 'localhost';
|
|
const PORT = process.env.REDIS_PORT ?? 6379;
|
|
client = createClient({ url: `redis://${HOST}:${PORT}` });
|
|
client.connect();
|
|
}
|
|
|
|
async hasData(key: string) {
|
|
const data = await client.json.get(key);
|
|
return (!!data);
|
|
}
|
|
|
|
async getData<Type>(key: string) {
|
|
const data = await client.json.get(key, { path: '.' });
|
|
return data as Type;
|
|
}
|
|
|
|
async setData<Type>(key: string, data: Type) {
|
|
await client.json.set(key, '.', data as any);
|
|
await client.json.get(key);
|
|
}
|
|
} |