Redis

박선우·2023년 2월 14일
0

CS 스터디

목록 보기
42/53
post-thumbnail

🌼 Redis

⛔️ Redis란? 왜쓰는가.

  • 오픈 소스로서 NoSQL로 분류되고, in-memory 솔루션으로 분류되기도 한다.
  • 외부에서 사용 가능한 Key-Value 쌍의 해시 맵 형태의 서버라고 생각할 수 있다.
  • 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 상당히 빠르다.
  • 싱글 스레드 방식이어서 연산을 하나씩 처리한다.

1️⃣ Cache

  • 결과를 저장하고 나중에 똑같은 요청이오면, DB 또는 API를 참조하지 않고 요청을 처리한다.
  • 파레토 법칙 - 80%의 결과는 20%의 원인으로 인해 발생
  • 캐시는 모든 결과를 캐싱할 필요가 없고, 많이 사용되는 20%만 캐싱함으로써 전체적으로 효율올린다.

2️⃣ Look Aside Cache (Lazy Loading)

  • 캐시에 데이터 존재 유무 확인
  • 데이터가 있다면 캐시의 데이터 사용
  • 데이터가 없다면 캐시의 실제 DB 데이터 사용
  • DB에서 가져 온 데이터를 캐시에 저장

3️⃣ Write Back

  • 모든 데이터를 캐시에 저장
  • 캐시의 데이터를 일정 주기마다 DB에 한꺼번에 저장 (배치)
  • DB에 저장한 데이터를 캐시에서 제거
  • DB에 요청이 몰리면 서버가 다운될 가능성이 있다. 그래서 모든 요청을 캐시에 데이터를 저장하고
  • 저장한 캐쉬값을 일정 주기마다 DB에 Insert해주는 방식
  • ☢️주의사항 => DB에 Insert되기전 Cache서버가 죽으면 데이터 유실이 될 수도 있다.

🐶 Redis 사용기

  • Redis를 로컬로 사용할 수 있고, Redis 클라우드를 사용하여 외부에서 접속할수 있다.
  • Redis 클라우드를 사용하여 호스팅 해주는 서비스를 쓰는 것이 협업할때 편리하다.

Redis 클라우드 등록하기!

const redisClient = redis.createClient({
  url: `redis://${process.env.REDIS_USERNAME}:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/0`,
  legacyMode: true,
});

redisClient.on('connect', () => {
  console.info('🟢 Redis 연결 성공!');
});
redisClient.on('error', (err) => {
  console.error('Redis Client Error', err);
});
redisClient.connect().then();
exports.redisCli = redisClient;
  • Mysql Workerbench 처럼 Redis Desktop Manage를 이용하여 눈으로 관리할 수 있게 사용하고 있다.
  • Redis 문법은redisCli, redisCli.v4 있다.

Redis 개념잡기(참조)

profile
코린이 열심히 배우자!

0개의 댓글