Redis를 활용한 가게 영업 상태 설정 및 데이터 처리

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 사용 예제

  1. Maven 의존성 추가:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 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에 저장하고 조회하는 예제입니다.

태그: Redis Spring Data Redis java

5월 25일 09:57에 게시됨