루아스크립트와 레디스역사

강코딩·2025년 10월 24일

레디스

목록 보기
2/21

⚙️ 루아(Lua)를 통한 유연한 처리

Redis는 Lua 스크립트 기능을 내장하고 있으며,
여러 개의 명령어를 한 번에 실행할 수 있는 배치 처리(batch operation) 를 제공합니다.

🧩 루아 스크립트의 역할

여러 Redis 명령을 하나의 스크립트로 묶어 원자적(Atomic)으로 실행 가능

데이터 추가, 조회, 삭제 등 여러 연산을 한 번에 처리 가능

실행 중 하나라도 실패하면 전체 작업이 롤백되어 일관성 유지

복잡한 트랜잭션 로직을 Redis 서버 내부에서 직접 처리하므로 네트워크 왕복 비용 감소

💡 즉, 루아 스크립트 = Redis의 Stored Procedure

🧠 실행 방식

클라이언트 측에서 코드를 직접 실행하는 대신, Redis 서버 내부에서 실행

EVAL 명령을 통해 루아 스크립트를 실행할 수 있음

모든 연산은 하나의 트랜잭션처럼 Atomic(원자적) 으로 처리됨

EVAL "return redis.call('set', KEYS[1], ARGV[1])" 1 myKey myValue

이런 구조 덕분에 Redis는 데이터 일관성을 높이고,
조건문/반복문 같은 복잡한 로직을 서버에서 바로 처리할 수 있습니다.

⚡ 상급 스레드 기반 요청 이벤트 주도 처리

Redis는 싱글 스레드(Event Loop) 기반으로 동작하지만,
이벤트 루프를 통해 수천~수만 개의 요청을 동시에 처리할 수 있습니다.

💡 왜 싱글 스레드인가?

대부분의 Redis 명령은 CPU보다 I/O 중심 작업

여러 스레드를 쓰면 컨텍스트 스위칭 오버헤드가 발생

단일 스레드 구조 덕분에 일관된 순서와 빠른 처리 가능

🧠 성능 최적화

Redis 6.0 이후에는 멀티 스레드 I/O 기능이 도입되어 일부 병목을 해소함

UNLINK, FLUSHDB, FLUSHALL ASYNC 등의 비동기 명령 지원

CPU 병목 현상이 심할 경우, 부분 멀티 스레드 처리로 확장 가능

즉, Redis는 여전히 싱글 스레드 중심이지만,
입출력(I/O) 병목을 최소화하기 위해 멀티 스레드를 “부분 적용”하는 구조를 채택했습니다.

🧭 COLUMN — 레디스 탄생부터 현재까지

Redis의 시작은 2009년으로 거슬러 올라갑니다.
당시 살바토레 산필리포(Salvatore Sanfilippo) 가 자신의 스타트업 성능 문제를 해결하기 위해 직접 개발한 프로젝트가 Redis의 기원이 되었습니다.

📜 Redis의 기원

처음에는 LLOOGG라는 실시간 로그 분석 시스템을 개선하기 위한 내부 도구로 개발됨

당시 MySQL을 기반으로 했지만, 실시간 처리 성능 한계에 부딪혀 Redis로 전환

2009년 5월 공식 공개, 인메모리 기반 고성능 저장소로 주목받기 시작

🚀 성장 과정

2010년 VMware 지원

2013년 Pivotal,

2015년부터는 Redis Labs(현 Redis Ltd.) 에서 개발 주도

이후 Redis는 클라우드 기반 서비스(AWS, Azure, GCP 등)에 필수 인프라로 자리 잡음

🔄 최근 변화

2020년 6월, 창립자 살바토레가 Redis 프로젝트에서 공식적으로 물러남

이후 Redis Ltd. 에서 커뮤니티와 함께 개발을 지속

오픈소스 버전과 상용 버전이 공존하는 형태로 발전

💬 정리
시기 주요 내용
2009 Salvatore가 Redis 초기 버전 개발
2010~2013 VMware 및 Pivotal 지원
2015 이후 Redis Labs(현 Redis Ltd.) 설립 및 상용화
2020 이후 창립자 퇴사, 커뮤니티/기업 공동 개발 구조 확립

Redis는 현재도 활발히 개발 중이며,
오픈소스 철학 + 상용 안정성을 동시에 추구하는 인메모리 데이터 플랫폼으로 자리 잡고 있습니다.

🧠 요약
구분 핵심 내용
루아 스크립트 서버 내부에서 로직 실행 → 네트워크 비용 절감, 원자성 보장
이벤트 주도 모델 싱글 스레드 + 이벤트 루프 구조로 초고속 처리
레디스 역사 2009년 등장 → 오픈소스 → 클라우드 필수 인프라로 발전

💡 Redis는 단순한 캐시가 아니라
“실시간 데이터 처리 플랫폼”으로 진화하고 있습니다.

profile
주니어 풀스택개발자

0개의 댓글