이론/백엔드 개념정리

2. Redis String관련

블스뜸 2025. 4. 30. 13:35
  • keys * : 데이터 베이스 내의 모든 키 조회
  • String관련
    • set을 통해 key:value 세팅
      - set user:email:1 tera199810@gmail.com
      - 단, 이미 존재하는 키이면 덮어쓰기가 된다

    • nx(not exist)를 통해 중복입력 방지
      - set user:email:1 tttt@gmail.com nx
      - 같은 키가 존재하면 pass, 없으면 set

    • ex(expiration)를 통한 유효기한 설정
      - set user:email:2 abcd@gmail.com nx ex 10
      - 10초간 해당 데이터를 유지(nx는 상황에 따라 사용)
      - expire <Key> 초단위 시간 : 유효기한을 나중에 설정해줄 때
      - TTL(Time To Live) 이라고 부르기도한다
      - Redis는 영구적인 데이터 보관을 목적으로 하지 않기 때문에 유효기한을 설정하는 편이다
      - 활용 : 사용자 인증정보 저장(ex-refresh 토큰)
        * set user:1:refresh_token <쿠키값> ex 10000
        * 해당 토큰을 통해 매번 인증할 필요없이 일정 시간동안 인증을 자동적으로 진행한다
        * at(access token) : 유효기한이 짧은 토큰
        * rt(refresh token) : 유효기한이 긴 토큰 
        * 인증요청은 매우 빈번한데(탭을 옮기거나 할때마다 진행) 느린 db를 사용하면 응답속도가 느려진다

    • del을 통한 키삭제
      - del <Key> : 해당 Key 삭제
      - flushdb : select된 데이터베이스의 모든 데이터 삭제
  •  redis 활용 예
    - 좋아요 기능
       1. rdb에서 관리하게되면 동시성 문제가 발생할 수 있다
       2. redis는 싱글 스레드이기 때문에 동시성 문제가 발생하지 않는다
    - 재고관리
       1. 좋아요기능과 마찬가지
        * 사용 예
           set posting:1:likes 0
           incr posting:1:likes : 특정 Key의 Value를 1만큼 증가
           decr posting:1:likes : 특정 Key의 Value를 1만큼 감소
    - 캐싱(임시저장) 기능
       0. redis에서 조회했던 기록이 있는지 확인한다
       1. 최초 조회시에는 rdb에서 값을 받아온다
       2. 사용자에게 보여주기 전에 redis에 저장
       3. 사용자에게 보여준다
       4. 사용자가 종료하고 다시 열람하면 0번에서 값을 가져온다
       ** 이 때 데이터는 Json을 표준으로 사용한다