LLM WikiAccess-protected knowledge portal
← 스터디 홈
77편 · 약 13분

Redis 8.10: Compact Hashes·HIMPORT·BACKUP으로 달라진 인메모리 DB 운영 기준

Redis 8.10이 해결하는 세 가지 문제

Redis 8.10은 2026년 7월 29일 GA 릴리스됐다. 이전 8.8(2026년 5월)에 이어 두 번째 마이너 릴리스다. 새 기능은 크게 세 가지 방향으로 나뉜다.

메모리 효율: 같은 스키마를 공유하는 다수의 해시 키에서 필드명 중복을 제거한다(Compact Hashes).

대용량 데이터 적재: 컴팩트 해시를 빠르게 벌크 삽입하는 HIMPORT 명령이 추가됐다.

백업 신뢰성: 노드 측에서 직접 수행하는 MP-AOF 기반 BACKUP 명령이 추가됐다.

세 가지 모두 운영 규모가 커진 Redis 클러스터의 실제 고통 지점을 건드린다.


Compact Hashes: 스키마 공유 키의 필드명 중복 제거

문제

Redis에서 해시(Hash) 자료구조는 필드명과 값의 쌍을 저장한다. 사용자 프로파일, 세션 데이터, 캐시된 레코드처럼 수백만 개의 키가 동일한 필드 집합을 공유하는 경우가 흔하다.

user:1 → { name: "Alice", age: "30", email: "[email protected]" }
user:2 → { name: "Bob",   age: "25", email: "[email protected]"   }
user:3 → { name: "Carol", age: "28", email: "[email protected]" }

이때 name, age, email이라는 필드명이 100만 키에 각각 저장된다. 필드명 자체는 수십~수백 바이트지만 100만 개 곱하면 수십~수백 MB의 중복 메모리가 발생한다.

해결책: 템플릿 기반 인코딩

Redis 8.10의 Compact Hashes는 동일한 필드 집합을 가진 키들을 템플릿(template)으로 묶는다. 템플릿 하나에 필드명을 한 번만 저장하고, 각 키는 필드값만 템플릿에 대한 참조 형태로 보관한다.

기존 방식: 필드명 반복 저장 user:1 name Alice email [email protected] age 30 user:2 name Bob email [email protected] age 25 user:3 name Carol email [email protected] age 28 필드명 3개 × 3 키 = 9번 저장 Redis 8.10: 템플릿 공유 인코딩 Template #1 name email age 필드명 1회 저장 user:1 Alice | alice@… | 30 user:2 Bob | bob@… | 25 user:3 Carol | carol@… | 28 필드명 1회 저장, 3 키 참조 메모리 절감 효과 필드명 길이 × (키 수 - 1) / 키 수 만큼 절감 (스키마 공유 비율에 비례)
Compact Hashes 메모리 구조 비교: 기존 방식 vs 템플릿 인코딩

설정 파라미터

Compact Hashes는 RDB 로드 시점에 적용된다. 세 가지 설정 파라미터로 동작을 제어한다.

hash-rdb-load-min-template-entries   # 템플릿 생성 최소 필드 수
hash-rdb-load-max-template-entries   # 템플릿 생성 최대 필드 수
hash-rdb-load-template-disassembly-threshold   # 템플릿 유지 최소 키 수

마지막 파라미터가 중요하다. 특정 스키마를 공유하는 키가 임계값 미만으로 줄면 Redis가 템플릿을 해체하고 일반 인코딩으로 전환한다. 키 삭제가 많은 환경에서 템플릿 파편화를 방지한다.

모니터링

INFO 명령에 새로운 메트릭이 추가됐다.

hash_templates             # 현재 활성 템플릿 수
hash_template_keys         # 템플릿 인코딩을 사용 중인 키 수
used_memory_hash_templates # 템플릿이 사용하는 메모리 (바이트)

Compact Hashes가 활성화된 환경에서는 used_memory_hash_templates와 키 수의 비율로 템플릿 효율을 모니터링할 수 있다.


HIMPORT: 컴팩트 해시 고속 벌크 삽입

HIMPORT는 Compact Hashes 형식의 해시를 대량으로 삽입할 때 사용하는 명령이다. "고처리량 컴팩트 해시 벌크 삽입(high-throughput compact hash bulk insertion)"으로 정의된다.

기존에 Redis에 수백만 개의 해시 키를 적재할 때는 HSET을 반복 호출하거나 파이프라이닝을 사용했다. 두 방법 모두 각 키마다 필드명을 반복 전송한다. HIMPORT는 템플릿 구조를 활용해 필드명을 한 번만 전송하고 여러 키의 값을 이어서 보낸다.

이 명령은 데이터 마이그레이션, 초기 데이터 적재, 배치 복원 시나리오에서 네트워크 대역폭과 CPU 직렬화 비용을 줄인다. (Open question: 정확한 명령 문법과 프로토콜 상세는 redis.io 공식 문서 확인 필요.)


BACKUP: MP-AOF 기반 노드-사이드 백업

기존 백업의 한계

Redis 백업에는 두 가지 경로가 있었다. BGSAVE로 RDB 스냅샷을 생성하거나, AOF(Append-Only File)를 통해 모든 쓰기를 파일에 기록하는 방식이다.

RDB 스냅샷은 포크(fork) 비용이 있고, 스냅샷 간 데이터 손실 위험이 있다. AOF는 파일이 무한히 커지므로 주기적으로 재작성(rewrite)해야 한다. 두 방법 모두 조정이 필요하고 복원 검증이 복잡하다.

Redis 8.10은 BACKUP 명령을 추가했다. 이 명령은 MP-AOF(Multi-Part AOF) 기반으로 노드 측에서 직접 백업 세트를 생성한다.

MP-AOF가 핵심이다

MP-AOF는 Redis 7.0에서 도입된 방식으로, 단일 거대 AOF 파일 대신 여러 파트 파일로 AOF를 분할 관리한다. 매니페스트 파일이 현재 활성 AOF 파트들을 추적한다.

BACKUP 명령은 MP-AOF 파트를 일관된 시점으로 고정해 복원 가능한 백업 세트를 만든다. 외부 도구나 별도 프로세스 없이 Redis 노드 자체가 백업 로직을 수행한다는 의미에서 "노드-사이드(node-side)"라고 부른다.

운영자 관점에서 이점은 명확하다. 백업 시점의 일관성을 Redis가 보장하고, 복원 과정도 Redis가 직접 처리한다.


새 명령어들

Redis 8.10은 리스트·집합 연산에 유용한 명령어 4개를 추가했다.

LMOVEM / BLMOVEM

LMOVEM은 한 번의 명령으로 여러 요소를 소스 리스트에서 대상 리스트로 이동한다. BLMOVEM은 블로킹 버전이다.

기존 LMOVE는 한 번에 하나의 요소만 이동했다. 큐 기반 작업 분배에서 여러 요소를 한 번에 이동할 때 여러 번의 왕복(round-trip)이 필요했다. LMOVEM은 이 비효율을 한 번의 명령으로 해소한다.

SUNIONCARD / SDIFFCARD

SUNIONCARD는 여러 집합의 합집합 크기(cardinality)를 반환한다. SDIFFCARD는 첫 번째 집합과 나머지 집합들의 차집합 크기를 반환한다.

기존에는 SUNION이나 SDIFF로 실제 요소들을 모두 받아서 SCARD로 세어야 했다. 크기만 필요한 경우에도 전체 집합 내용을 네트워크로 전송해야 했다. 두 명령은 크기 계산에 특화해 불필요한 데이터 전송을 제거한다.

XREAD/XREADGROUP 개선

스트림 명령 XREADXREADGROUPMAXCOUNTMAXSIZE 인자가 추가됐다. 스트림 읽기 양을 메시지 수와 크기 양 기준으로 동시에 제한할 수 있다.


TLS 피어 인증서 기반 서버-서버 인증

Redis 8.10은 서버 간 TLS 피어 인증서 인증(TLS peer certificate-based server-to-server authentication)을 추가했다.

기존 Redis 클러스터나 레플리케이션 설정에서 노드 간 통신은 인증서 없이 IP/포트 기반으로만 신뢰했다. 공격자가 클러스터 내부 네트워크에 접근하면 노드로 위장할 수 있었다.

이제 서버-서버 통신에서도 인증서를 검증한다. 클러스터 멤버가 TLS 클라이언트 인증서를 제시하고, 상대방이 CA 기준으로 검증한다. mTLS 방식이 서버 간 통신에도 적용된다.

이 기능은 규정 준수 요건(예: PCI-DSS, FIPS 140-3)이 있는 환경이나 Zero Trust 네트워크 설계에서 의미가 크다.


성능 최적화

8.10은 기능 추가 외에 내부 성능 개선도 포함한다.

  • lpSeek() 검증 효율화: listpack 내 탐색 검증 로직 최적화
  • HSET/HMSET 광역 배치(wide batching): 여러 필드를 동시에 설정할 때 내부 처리 묶음 개선
  • HNSW 인덱스 단일 바이트 잠금: Redis Search의 HNSW 벡터 인덱스 노드 잠금을 1바이트로 줄여 인덱스 메모리 절감
  • rax 리프 인라이닝: 고정 길이 키를 위한 rax(Radix Tree) 리프 노드 인라이닝으로 포인터 역참조 제거

운영 체크리스트

Compact Hashes 적용 검토

스키마 공유 해시가 수십만 개 이상인 환경에서 메모리 절감 효과가 크다. hash-rdb-load-min-template-entries를 실제 필드 수에 맞게 조정하고 hash_templatesused_memory_hash_templates 모니터링을 추가한다. 키 삭제가 빈번한 환경에서는 hash-rdb-load-template-disassembly-threshold를 낮춰 잔여 템플릿 파편화를 방지한다.

BACKUP 명령 도입 평가

기존 RDB 스냅샷 방식을 대체하거나 보완할 수 있다. MP-AOF가 활성화된 환경에서만 동작하므로 AOF 설정(appendonly yes, aof-use-rdb-preamble yes)을 먼저 확인한다.

TLS 피어 인증 활성화

규정 준수 요건이 있는 환경에서는 기존 TLS 채널 암호화에 추가로 서버-서버 피어 인증을 활성화한다. CA 인프라와 인증서 갱신 자동화 여부를 먼저 점검한다.

LMOVEM으로 큐 처리 최적화

여러 LMOVE 왕복이 병목인 큐 소비 패턴에서 LMOVEM으로 전환하면 명령 수를 줄일 수 있다.

항목내용
릴리스Redis 8.10.0 GA, 2026년 7월 29일
핵심 기능Compact Hashes, HIMPORT, BACKUP, TLS 피어 인증
새 명령LMOVEM, BLMOVEM, SUNIONCARD, SDIFFCARD
스트림 개선XREAD/XREADGROUP MAXCOUNT/MAXSIZE 인자
전제 조건BACKUP: AOF 활성 필요; Compact Hashes: RDB 로드 시 자동 적용

8.8과의 비교

이전 릴리스 Redis 8.8(2026년 5월)에서는 Array 자료구조, INCREX, XNACK이 추가됐다. 8.10은 해시 중심 메모리 최적화와 운영 편의성(BACKUP, TLS 피어 인증)으로 방향을 넓혔다. 두 릴리스를 연속으로 적용하면 자료구조 다양성, 메모리 효율, 보안 강화, 운영 도구 세 측면이 동시에 개선된다.

References