Remote Dictionary Server
npm install -g redis-cli
3 계층 구조를 사용할 경우 직접적으로 db 에 닿아있는 repository 에 redis 를 관리하게 된다.
생성자 (constructor) 를 통해서 repository 를 불러올 때 redis 와 연결해준 후 메서드 들을 통해 get, set, delete 를 수행할 수 있다. 각 메서드에는 initialize() 메서드가 담겨있어 redis 와 connect 할 수 있다
const redis = require("redis");
const sequelize = require("sequelize");
require("dotenv").config();
class RedisClientRepository {
constructor() {
this.redisClient = redis.createClient({
url: `redis://${process.env.REDIS_USERNAME}:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/0`,
legacyMode: true,
});
this.redisConnected = false;
}
initialize = async () => {
this.redisClient.on("connect", () => {
this.redisConnected = true;
console.info("Redis connected!");
});
this.redisClient.on("error", (error) => {
console.error("Redis Client Error", error);
});
if (!this.redisConnected) {
this.redisClient.connect().then();
}
};
setRefreshToken = async (refreshToken, email) => {
await this.initialize();
await this.redisClient.v4.set(refreshToken, email);
};
getRefreshToken = async (refreshToken) => {
await this.initialize();
return await this.redisClient.v4.get(refreshToken);
};
deleteRefreshToken = async (refreshToken) => {
await this.initialize();
await this.redisClient.v4.del(refreshToken);
};
}
module.exports = RedisClientRepository;