Redis 클러스터에서 다중 키 Lua 스크립트 실행하기

핵심: 클러스터 모드에서 Lua 스크립트가 접근하는 모든 키는 같은 hash slot에 있어야 한다. 슬롯이 갈리면 실행 자체가 거부된다(CROSSSLOT). 해결책은 하나다 — 같은 원자적 연산으로 묶을 키들에 hash tag({...})를 넣어 슬롯을 강제로 일치시킨다. 왜 이런 제약이 생기나 Redis 클러스터는 키를 16384개의 hash slot으로 샤딩한다. 슬롯은 CRC16(key) % 16384로 계산되고, 각 슬롯은 특정 마스터 노드가 소유한다. Lua 스크립트는 단일 노드에서 원자적으로 실행된다. 스크립트가 도중에 다른 노드의 키를 만지려면 노드 간 조율이 필요한데, 클러스터는 그런 분산 트랜잭션을 지원하지 않는다....

2026-07-13 · 3 min · 630 words

Redis Hash·Sorted Set 명령어

Redis Hash: 하나의 키 아래 여러 field-value 쌍을 담는 자료구조. 객체 하나를 필드 단위로 저장·조회할 때 쓴다. (HSET, HGET) Redis Sorted Set(ZSet): 각 멤버에 score(부동소수점)를 매겨 오름차순 정렬 상태로 보관하는 집합. score가 같으면 멤버 문자열 사전순으로 정렬한다. 랭킹·우선순위 큐·범위 조회에 쓴다. (ZADD, ZSCORE, ZINCRBY, ZRANGEBYSCORE, ZREM) EXPIRE는 자료구조와 무관하게 키 자체에 만료 시간을 거는 키 단위 명령이다. EXPIRE — 키 만료 설정 EXPIRE key seconds: 키에 TTL(Time To Live)을 초 단위로 건다....

2026-07-13 · 3 min · 635 words

Arcus, Redis, Valkey 비교

셋 다 인메모리 캐시 솔루션이지만, 관계를 이해하려면 먼저 memcached와 Redis의 차이를 알아야 한다. Arcus는 memcached 포크이고, Valkey는 Redis 포크다. 즉 Arcus vs Redis/Valkey는 memcached 계열 vs Redis 계열의 차이, Redis vs Valkey는 라이선스의 차이로 정리된다. memcached vs Redis 두 솔루션의 출발점이자, 나머지 비교의 토대다. 자료구조 memcached: 값을 plain string으로만 저장하는 단순 key-value 저장소. 키는 최대 250 byte, 값은 기본 1MB로 제한된다. Redis: string 외에 hash, list, set, sorted set, stream, bit array, hyperloglog 등 풍부한 자료구조를 지원한다....

2026-06-15 · 6 min · 1258 words

Cache Stampede

목표 Cache Stampede가 무엇인지 이해한다. Cache Stampede를 해결하기 위해 적용할 수 있는 방법을 이해한다. Cache Stampede 란? server side cache는 자주 바뀌지 않는 데이터에 대해서 데이터베이스 읽기 동작을 최소화 하기위해 캐싱한다. redis를 사용한다고 하면, redis로 데이터를 조회한 후 존재하지 않는다면 데이터베이스로 조회를 하고, 이를 redis에 저장한다. 이런 경우 일반적으로 캐시에 TTL(만료 기간)을 설정해둔다. 이 경우 트래픽이 1000rps 인 서비스에서 redis의 데이터가 TTL 만료가 되었다고 했을 때, 1초동안 redis에 캐싱을 하지 못 한다면 1초 동안 1000개의 요청이 모두 데이터베이스를 조회하면서 데이터베이스에 부하를 줄 수 있다....

2025-01-17 · 1 min · 202 words

Redis 서버 구성하기

설치 및 구성 redis-server를 실행한다. $ sudo apt update $ sudo apt install redis-server redis-server가 서비스 환경으로 구동될 수 있도록 설정 supervised systemd $ sudo systemctl restart redis.service 외부에서 접근 가능하도록 수정 bind 0.0.0.0 $ sudo systemctl restart redis 패스워드 설정 requirepass ${내가 원하는 패스워드} $ sudo systemctl restart redis 확인 참고 자료 https://xerar.tistory.com/80 https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04 https://infoscoco.com/92

2024-09-15 · 1 min · 56 words