[241128 TIL]

프로젝트 관리 심화

인메모리 저장소 및 캐싱

  • Redis

Redis 명령어

 

String

  • 가장 기본적인 자료형, Redis가 Java의 Map<String, String>처럼 동작한다고 생각하면서 접근하면 편함
  • 저장할 수 있는 최대 크기는 512MB
  • GET, SET
    • SET <key> <value>: key에 value 문자열 데이터를 저장, "으로 공백 구분
    • GET <key>: key에 저장된 문자열 반환
  • INCR, DECR
    • INCR key: key에 저장된 데이터를 1 증가
    • DECR key: key에 저장된 데이터를 1 감소
  • MSET, MGET
    • MSET key value [key value …]: key value의 형태로 주어진 인자들을 각 key에 value를 저장
    • MGET key [key]: 주어진 모든 key에 해당하는 데이터를 반환.

List

  • 여러 문자열 데이터를 Linked List의 형태로 보관하는 자료형
  • 스택 또는 큐 처럼 사용
  • Java의 Map<String, List<String>> 형태
  • LPUSH, RPUSH, LPOP, RPOP
    • LPUSH key value: key에 저장된 리스트의 앞쪽에 value를 저장
    • RPUSH key value: key에 저장된 리스트의 뒤쪽에 value를 저장
    • LPOP key: key에 저장된 리스트의 앞쪽에서 값을 반환 및 제거
    • RPOP key: key에 저장된 리스트의 뒤쪽에서 값을 반환 및 제거
  • LLEN, LRANGE
    • LLEN key: key에 저장된 리스트의 길이를 반환
      • 없는 Key를 대상으로 하면 0
      • 다른 자료형을 저장한 Key를 대상으로 하면 오류 발생
    • LRANGE key start end: key의 start부터 end까지 원소들을 반환
      • end가 실제 길이를 벗어나도 오류가 발생 X
      • start > end일 경우 빈 결과 반환
      • 음수의 경우 리스트의 뒤에서부터 데이터를 가져옴

Set

  • 문자열의 집합
  • 중복값 X, 순서 X
  • SADD, SREM, SMEMBERS, SISMEMBER, SCARD
    • SADD key value: key에 저장된 집합에 value를 추가
    • SREM key value: key에 저장된 집합의 value를 제거
    • SMEMBERS key: key에 저장된 집합의 모든 원소를 반환
    • SISMEMBER key value: key에 저장된 집합에 value가 존재하는지 반환
    • SCARD key: key에 저장된 집합의 크기를 반환
  • SINTER, SUNION, SINTERCARD
    • SINTER key1 key2: key1과 key2에 저장된 집합들의 교집합의 원소들을 반환
    • SUNION key1 key2: key1과 key2에 저장된 집합들의 합집합의 원소들을 반환
    • SINTERCARD number key1 [key2 ...]: number개의 key에 저장된 집합들의 교집합의 크기를 반환

Hash

  • Field - Value 쌍으로 이뤄진 자료형
  • Hash 데이터를 가져오기 위해 Key를 사용, 이후 다시 Key에 저장된 Hash 데이터에 Field - Value 쌍을 넣어주는 형식으로 동작
  • Redis 전체가 Map 이라면 Hash는 Map<String, Map<String, String>>의 형식
  • HSET, HGET, HMGET, HGETALL, HKEYS, HLEN
    • HSET key field value [field value]: key의 Hash에 field에 value를 넣음. 한번에 여러 field - value 쌍을 넣어줄 수 있음
    • HGET key field: key에 저장된 Hash의 field에 저장된 value를 반환. 없는 field의 경우 null.
    • HMGET key field [field]: key에 저장된 Hash에서 복수의 field에 저장된 value를 반환.
    • HGETALL key: key에 저장된 Hash에 저장된 field - value를 전부 반환.
    • HKEYS key: key에 저장된 Hash에 저장된 field를 전부 반환
    • HLEN key: key에 저장된 Hash에 저장된 field의 갯수를 반환

Sorted Set

  • 이름처럼 정렬된 집합
  • 기본적으로 Set과 동일하게, 유일한 값들만 유지하지만 여기에 더해 각 값들에 score라고하는 실수를 함께 보관
  • 데이터를 가져올 때, score를 바탕으로 정렬하여 값들을 가져올 수 있음
  • ZADD, ZINCRBY, ZRANK, ZRANGE, ZREVRANK, ZREVRANGE
    • ZADD key score member [score member ...]: key의 Sorted Set에 score를 점수로 가진 member를 추가, 이미 있는 member의 경우 새로운 score를 설정
    • ZRANK key member: key의 Sorted Set의 member의 순위를 오름차순 기준으로 0에서 부터 세서 반환
    • ZRANGE key start stop: key의 Sorted Set의 member들을 start 부터 stop 순위까지 오름차순 기준으로 반환
    • ZREVRANK key member: key의 Sorted Set의 member의 순위를 내림차순 기준으로 0에서 부터 세서 반환
    • ZREVRANGE key start stop: key의 Sorted Set의 member들을 start 부터 stop 순위까지 내림차순 기준으로 반환
    • ZINCRBY key increment member: key의 Sorted Set의 member의 score를 increment 만큼 증가 (음수를 전달하면 감소)

그 외 공용 명령

  • DEL, EXPIRE, EXPIRETIME
    • DEL key: key(와 저장된 데이터)를 제거
    • EXPIRE key seconds: key의 TTL(유효시각)을 seconds로 설정, seconds초가 지나면 key 제거
    • EXPIRETIME key: key가 만료되는 시각을 Unix Timestamp로 반환
  • KEYS *: 저장된 모든 Key 확인
  • FLUSHDB: 모든 Key 제거

'[내일배움캠프] AI 를 활용한 백엔드 아카데미 심화 과정 > TIL' 카테고리의 다른 글

MSA 개인 프로젝트 (1)  (1) 2024.12.06
캐싱(Caching), 캐싱의 필요성, 캐싱 전략  (1) 2024.11.29
Docker  (0) 2024.11.27
QueryDSL  (0) 2024.11.26
MSA 프로젝트  (0) 2024.11.25

+ Recent posts