Redis 시계열 대시보드
Redis 시계열 대시보드 (Rolling Sensor Graph Demo)
Redis 시계열 데이터로 롤링 센서 그래프 데모를 만드는 법 — 고속 수치 데이터를 서브 밀리초 지연과 자동 다운샘플링으로 수집·조회·보존하는 패턴입니다.
언제 Redis 시계열을 쓰는가
고속으로 도착하는 시간 순서 수치 데이터 — 센서 판독값, 애플리케이션 메트릭, 텔레메트리, 가격 — 를 서브 밀리초 지연과 자동 다운샘플링으로 수집·조회·보존해야 할 때 Redis 시계열을 사용합니다.
왜 이 문제가 어려운가
시계열 워크로드는 전형적인 읽기 중심 비율을 뒤집습니다. 초당 수십만 개 샘플의 수집이 일어날 수 있는 반면 읽기는 비교적 드뭅니다. 관계형·문서 데이터베이스는 이런 쓰기 볼륨을 위해 설계되지 않아 지속 부하에서 성능이 저하됩니다.
목적에 맞는 구조가 없으면 팀들은 정렬 집합이나 커스텀 Lua 스크립트로 시계열을 어림짐작합니다. 작은 규모에서는 동작하지만, 네이티브 집계·자동 다운샘플링·샘플별 보존이 없어 취약한 정리 작업과 늘어나는 메모리 비용으로 이어집니다.
InfluxDB나 TimescaleDB 같은 전용 시계열 데이터베이스는 페타바이트 규모의 콜드 아카이브와 배치 분석을 처리하지만, 이미 스택에 있는 인스턴스에서 실시간 지연이 요구사항일 때 프로비저닝·확장·모니터링할 별도의 시스템이 됩니다. (Redis Streams는 다른 문제를 풉니다 — 시간 창에 대한 수치 집계가 아니라 컨슈머 그룹 전달이 있는 순서 이벤트 로그요.)
Redis 솔루션에서 기대할 수 있는 것
다음을 할 수 있습니다.
- 별도의 수집 파이프라인 없이 지속적인 고볼륨으로 기기 텔레메트리나 애플리케이션 메트릭을 수집합니다.
- 대시보드·알림용으로 임의 시간 창에 대한 집계 범위 쿼리를 한 자리 숫자 밀리초 응답 시간으로 실행합니다.
- 데이터가 도착하면 자동으로 실행되는 다중 계층 다운샘플링(원본 → 1분 평균 → 1시간 평균)을 정의합니다.
- 수동 정리 작업 없이 메모리를 제한된 상태로 유지하는 보존 정책을 시행합니다.
- 근본 원인 분석과 운영 모니터링을 위해 라벨로 수천 개 시리즈를 쿼리합니다.
- 별도의 메트릭 백엔드 없이 실시간 운영 대시보드를 구동합니다.
Redis가 이 솔루션을 어떻게 지원하는가
실제로 각 메트릭은 쿼리하려는 차원(지역, 호스트, 센서 유형)의 선택적 라벨과, 새 샘플이 도착할 때 다운샘플링 요약을 동반 키에 쓰는 컴팩션 규칙을 가진 Redis 시계열 키로 저장됩니다.
Redis가 시계열 워크로드에 잘 맞는 이유가 되는 기능들은 다음과 같습니다.
- 시계열 데이터 구조(
TS.*명령)는 서브 밀리초 쓰기 지연의 지속 고속 수집을 위해 설계되었습니다. TS.RANGE와TS.MRANGE가 한 자리 숫자 밀리초 안에 임의 시간 창에 대한 집계 결과(avg,sum,min,max,count,std.p,std.s,twa등)를 반환해, 애플리케이션 측 집계 로직을 없앱니다.TS.CREATERULE이 집계 함수와 버킷 기간을 가진 소스→목적지 컴팩션을 정의하므로, 외부 파이프라인 없이 다운샘플링이 Redis 안에서 실행됩니다.TS.CREATE의RETENTION파라미터가 가장 최근 샘플에 상대적인 샘플별 트리밍을 시행해, 수동 정리나 키별EXPIRE없이 메모리를 제한된 상태로 유지합니다.- 라벨 기반 보조 인덱싱이 단일 호출에서 모든 차원(지역, 호스트, 센서 유형)으로 수천 개 키에 걸친 교차 시리즈 쿼리(
TS.MRANGE…FILTER)를 가능하게 합니다.
생태계 (Ecosystem)
다음 도구·라이브러리가 Redis 시계열과 통합됩니다.
- Grafana: 실시간 시계열 대시보드용 Redis Data Source 플러그인
- Prometheus: RedisTimeSeries 원격 읽기/쓰기 어댑터
- Telegraf: 수집된 메트릭을 Redis로 스트리밍하는 출력 플러그인
- 클라이언트 라이브러리:
TS.*명령은 redis-py, Jedis, ioredis, go-redis를 포함한 표준 Redis 클라이언트 라이브러리에서 사용 가능 - 인프라: 내장 시계열 지원이 있는 관리형 배포용 Redis Cloud
나만의 Redis 시계열 대시보드를 만드는 코드 예시
다음 가이드들은 Redis 시계열을 기반으로 롤링 센서 그래프 데모를 만드는 법을 보여줍니다. 각 가이드는 세 개의 가상 센서, 원시 판독값의 롤링 그래프, 같은 시간 축에 버킷된 min/max/average 요약, 그리고 오래된 샘플이 눈에 띄게 만료되는 짧은 보존 창을 가진 실행 가능한 예시를 포함합니다.
- redis-py (Python)
- node-redis (Node.js)
- go-redis (Go)
- Jedis (Java)
- Lettuce (Java)
- NRedisStack (C#)
- Predis (PHP)
- redis-rb (Ruby)
- redis-rs (Rust)
더 알아보기 (Learn more)
- Redis 시계열 데이터 타입 — TS.* 명령·컴팩션·보존
- Redis Streams — 시간 창 수치 집계가 아닌 순서 이벤트 로그