📖 이 글은 Redis 공식 문서(Data Types)를 기반으로 작성되었습니다.
💡 Java 기반 개발 관점에서 Redis 자료구조와 명령어를 정리합니다.
🔹 Redis에서 지원하는 주요 자료구조
자료구조설명 및 사용 예시
자료구조 | 설명 및 사용 예시 |
String | 가장 기본적인 자료형 (숫자, 문자 모두 가능) |
Hash | 필드-값 구조 (자바의 Map과 유사) |
List | 연결 리스트 (메시지 큐, 채팅 로그 등) |
Set | 중복 없는 집합 (태그, 유저 ID 모음 등) |
Sorted Set | 점수를 기준으로 정렬된 Set (랭킹 시스템 등) |
Stream | Kafka-like 로그 스트림 (실시간 로그/메시지 큐) |
🔸 1. String
✅ 대표 명령어: SET, GET, INCR, APPEND, EXPIRE
SET name "혜진"
GET name
INCR counter # 숫자 증가
APPEND name "짱" # 문자열 이어붙이기
EXPIRE name 60 # 60초 후 만료
Java 예시 (RedisTemplate)
redisTemplate.opsForValue().set("name", "혜진");
String name = redisTemplate.opsForValue().get("name");
🔸 2. Hash
✅ 대표 명령어: HSET, HGET, HGETALL, HMSET
HSET user:1 name 혜진 age 28
HGET user:1 name
HGETALL user:1
Java 예시
redisTemplate.opsForHash().put("user:1", "name", "혜진");
redisTemplate.opsForHash().put("user:1", "age", "28");
Map<Object, Object> user = redisTemplate.opsForHash().entries("user:1");
🔸 3. List
✅ 대표 명령어: LPUSH, RPUSH, LPOP, LRANGE
LPUSH messages "hi"
RPUSH messages "hello"
LRANGE messages 0 -1 # 전체 리스트 조회
Java 예시
redisTemplate.opsForList().leftPush("messages", "hi");
redisTemplate.opsForList().rightPush("messages", "hello");
🔸 4. Set
✅ 대표 명령어: SADD, SMEMBERS, SISMEMBER, SREM
SADD tags "java"
SADD tags "redis"
SMEMBERS tags
Java 예시
redisTemplate.opsForSet().add("tags", "java", "redis");
Set<Object> tags = redisTemplate.opsForSet().members("tags");
🔸 5. Sorted Set (ZSet)
✅ 대표 명령어: ZADD, ZRANGE, ZRANK, ZREM
ZADD ranking 100 "혜진"
ZADD ranking 150 "성진"
ZRANGE ranking 0 -1 WITHSCORES
Java 예시
redisTemplate.opsForZSet().add("ranking", "혜진", 100);
Set<Object> rank = redisTemplate.opsForZSet().range("ranking", 0, -1);
🔸 6. Stream (실시간 로그 저장)
✅ 대표 명령어: XADD, XRANGE, XREAD, XGROUP
XADD mystream * message "안녕"
XRANGE mystream - +
Stream은 실시간 채팅/로그 등에 적합하고,
Java에서는 RedisStreamListener 혹은 Lettuce Client로 활용
🔹 Redis 키 설계와 TTL 전략
- 키 네이밍 규칙 : 실무에서는 `user:1:name`, `chat:room:1234`, `token:refresh:userid` 같은 prefix 구조를 사용해 도메인 분리를 명확히 한다.
- TTL(Time To Live) : 임시 데이터는 반드시 만료 시간을 설정해야 메모리 누수를 방지할 수 있다.
- 명령어 예시: `EXPIRE key 3600`, `SET key value EX 60`
- Java 예시:
redisTemplate.opsForValue().set("authCode:01012345678", "9372", Duration.ofMinutes(3));
- 활용 예시
- 인증 코드 : `authCode:{phone}` → TTL 3분
- 채팅 메시지 캐시: `chat:room:1234:recent` → TTL 15일
- 자동 저장 코드: `autosave:{userId}:{path}` → TTL 24시간
📌 마무리
이번 글에서는 Redis의 주요 자료구조와 명령어를 Java 기반으로 정리했다.
다음에는 캐시 적용, pub/sub 구조, 실시간 처리 흐름을 다뤄볼 예정!
'DevLog > Redis' 카테고리의 다른 글
🚨 Docker로 Redis 실행 시 포트 충돌 에러 해결하기 (bind: address already in use) (2) | 2025.08.28 |
---|---|
🚨 Spring Boot + Redis 연결 오류: RedisConnectionFailureException: Unable to connect to Redis (0) | 2025.08.20 |
[Redis] Redis 정리 #3 - 캐시 적용과 @Cacheable 사용법 (0) | 2025.07.20 |
[Redis] Redis 정리 #1 - 개념과 특징 (0) | 2025.07.20 |