1. 가게 영업 상태 설정을 위한 Redis 사용
1.1 Redis 소개
Redis는 메모리 기반의 Key-Value 구조 데이터베이스입니다.
- 빠른 읽기/쓰기 성능 제공
- 핫 데이터(핫 상품, 뉴스 등) 저장에 적합
- 다양한 기업에서 널리 사용됨
공식 사이트: https://www.redis.net.cn
1.2 Redis 데이터 타입
1.2.1 주요 데이터 타입 설명
Redis는 Key-Value 구조로 데이터를 저장하며, Key는 항상 문자열이고 Value는 다섯 가지 주요 데이터 타입으로 구성됩니다:
- 문자열(String)
- 해시(Hash)
- 리스트(List)
- 집합(Set)
- 순위 집합(Sorted Set/ZSet)
1.2.2 각 데이터 타입의 특징
- 문자열(String): 가장 단순한 데이터 타입.
- 해시(Hash): Java의 HashMap과 유사한 구조.
- 리스트(List): 삽입 순서대로 정렬되며 중복 허용.
- 집합(Set): 순서 없고 중복 없는 데이터 저장.
- 순위 집합(Sorted Set/ZSet): 점수(score)를 기준으로 오름차순 정렬된 집합.
1.3 Redis 주요 명령어
1.3.1 문자열 관련 명령어
Redis 문자열 데이터를 다루는 명령어들:
SET key value: 지정된 키에 값을 설정.GET key: 지정된 키의 값을 가져옴.SETEX key seconds value: 키에 값을 설정하고 만료 시간 설정.SETNX key value: 키가 존재하지 않을 때만 값을 설정.
1.3.2 해시 관련 명령어
Redis 해시 데이터를 다루는 명령어들:
HSET key field value: 지정된 필드의 값을 설정.HGET key field: 특정 필드의 값을 가져옴.HDEL key field: 특정 필드를 삭제.HKEYS key: 모든 필드 이름을 가져옴.HVALS key: 모든 필드 값들을 가져옴.
1.3.3 리스트 관련 명령어
Redis 리스트 데이터를 다루는 명령어들:
LPUSH key value1 [value2]: 리스트의 앞쪽에 항목 추가.LRANGE key start stop: 지정된 범위 내의 항목들을 가져옴.RPOP key: 리스트의 마지막 항목을 제거하고 반환.LLEN key: 리스트의 길이를 가져옴.
1.3.4 집합 관련 명령어
Redis 집합 데이터를 다루는 명령어들:
SADD key member1 [member2]: 집합에 항목 추가.SMEMBERS key: 집합의 모든 항목을 가져옴.SCARD key: 집합의 항목 개수를 가져옴.SINTER key1 [key2]: 여러 집합의 교집합을 가져옴.SREM key member1 [member2]: 집합에서 항목 제거.
1.3.5 순위 집합 관련 명령어
Redis 순위 집합 데이터를 다루는 명령어들:
ZADD key score1 member1 [score2 member2]: 순위 집합에 항목 추가.ZRANGE key start stop [WITHSCORES]: 지정된 범위 내의 항목들을 가져옴.ZINCRBY key increment member: 특정 항목의 점수를 증가.ZREM key member [member...]: 순위 집합에서 항목 제거.
1.3.6 일반적인 명령어
데이터 타입과 관계없이 사용 가능한 명령어들:
KEYS pattern: 패턴에 맞는 모든 키 찾기.EXISTS key: 특정 키 존재 여부 확인.DEL key: 특정 키 삭제.
1.4 Java에서 Redis 사용하기
Java에서는 여러 Redis 클라이언트를 사용할 수 있습니다.
- Jedis
- Lettuce
- Spring Data Redis
Spring Data Redis 사용 예제
- Maven 의존성 추가:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- Redis 설정 추가:
spring:
redis:
host: ${sky.redis.host}
아래는 간단한 코드 예제입니다:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@Service
public class ShopService {
@Autowired
private StringRedisTemplate redisTemplate;
public void setShopStatus(String shopId, String status) {
redisTemplate.opsForValue().set("shop:" + shopId + ":status", status);
}
public String getShopStatus(String shopId) {
return redisTemplate.opsForValue().get("shop:" + shopId + ":status");
}
}
위 코드는 가게의 영업 상태를 Redis에 저장하고 조회하는 예제입니다.