Skip to content

Redis ‐ Redis Keys Management

woojin.jang edited this page Apr 22, 2026 · 1 revision

Redis - Redis Keys Management

Keys 관리 기법

스크린샷 2026-04-22 23 25 46

1. KEYS 명령어(패턴 매칭)

  • 가장 직관적이지만 위험성이 큰 방식이다.
    • 동작 방식 : 데이터베이스에 저장된 모든 키를 훑어서 패턴에 맞는 키를 한 번에 다 가져온다.
    • 특징(전체 키 조회) : 데이터 양이 적을 때는 빠르고 간편하다.
    • 문제점(O(N) 서버 블로킹) : Redis는 싱글 쓰레드 기반으로 동작한다. KEYS 명령어가 수백만 개의 키를 조회하는 동안 다른 모든 클라이언트 요청(읽기/쓰기)은 모두 대기 상태가 된다. 이 때문에 서비스 응답 속도가 급격히 느려지거나 서버가 다운된 것처럼 보이는 장애로 이어질 수 있다.

2. SCAN 명령어(커서 기반)

  • KEYS의 단점을 보완한 안전한 대안이다.
    • 동작 방식 : 한 번에 모든 키를 가져오지 않고, 커서(Cursor)를 사용해 데이터를 조금씩 나누어서 가져온다.
    • 특징(일부씩 나눠서 조회) : 클라이언트가 서버에 다음 데이터를 달라고 반복해서 요청하는 방식이다.
    • 장점(O(1) per call) : 한 번의 호출당 처리 시간이 매우 짧아 서버를 블로킹하지 않는다.
스크린샷 2026-04-22 23 26 42
  • EXISTS key : 사용자가 확인하고 싶은 특정 키 이름을 매개변수로 전달한다.
  • 키 존재 확인 : Redis 내부의 인덱스(Hash Table)에서 해당 키가 등록되었는지 검색한다.
  • 1을 반환하면 해당 키가 존재함을, 0을 반환하면 해당 키가 존재하지 않음을 의미한다.
  • 시간복잡도 O(1) : Redis는 Key-Value를 쌍으로 관리하며 내부적으로 해시 테이블(Hash Table) 구조를 사용하기 때문에 단 한 번의 연산으로 존재 여부를 찾아낼 수 있어 매우 빠르며 서버에 부하를 거의 주지 않는다.

📖 Java

📖 Kotlin

📖 Coroutine

📖 Spring

📖 Spring Security

📖 Spring Batch

📖 Reactive Programming

📖 Database

📖 MySQL

📖 Redis

📖 JPA

📖 QueryDsl

📖 MSA

📖 Kafka

📖 Apache Flink

  • [Apache Flink - Apache Flink Architecture]
  • [Apache Flink - Stream Processing]
  • [Apache Flink - Data Stream API & Window]
  • [Apache Flink - State Management]

📖 HTTP

📖 AWS

📖 Docker

📖 Kubernetes

📖 CI/CD

📖 Nginx

📖 Monitoring🥈

  • [Monitoring - Log Concept]
  • [Monitoring - Log Level & Filter]
  • [Monitoring - Logback]
  • [Monitoring - Log Collection with ELK Stack]
  • [Monitoring - Log Monitoring with Kibana]
  • [Monitoring - Building a Monitoring System with Spring Boot Actuator]
  • [Monitoring - Server Monitoring with Prometheus and Grafana with Discord Alerts]

📖 Test

📖 Effective Java 3/E

📖 Kotlin Academy - Effective Kotlin

📖 Kotlin Academy - 핵심편

📖 스프링으로 시작하는 리액티브 프로그래밍

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

📖 Clean Code

📖 리팩토링 2판

📖 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식

📖 GraphQL

Clone this wiki locally