Redis Spring 연동 및 사용

2023. 7. 20. 13:07· DataBase/Redis
목차
  1. 개  요
  2. TEST 환경 정리
  3. Redis 연동 설정
  4. Redis 사용 방법
728x90

redis logo

개  요

Redis와 Spring을 연동하여 Redis 활용 방법을 정리

Redis가 설치 되어 있따는 전제하에 작성 하였으며, 설치는 아래 URL 참고

URL : https://sh-it-work.tistory.com/15

 

TEST 환경 정리

구  분 SW Version
OS Ubuntu 22.0.4LTS
SW Redis v7.0.2
SW Tomcat v9.0.78
SW Java v11.0.9
SW postgre v15.2
FW Spring Boot v2.7.12
FW Intellij -

Redis 연동 설정

Build.gradle

Redis를 사용하기 위한 의존성 작성

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}

application.yml

Redis 서버 IP, Port 설정

### redis setting
spring.redis.host=${REDIS_SERVER_IP}
spring.redis.port=${REDIS_SERVER_PORT}

application.yml내 Redis 변수

변  수 기본값 설  명
spring.redis.database 0 ConnectionFactory에 사용되는 데이터베이스 인덱스
spring.redis.hosts localhost Redis Server IP
spring.redis.password - Redis Server login Password
spring.redis.port 6379 Redis Server Port
spring.redis.pool.max-active 8 Pool에 할당될 수 있는 커넥션 최대 수(음수는 무제한)
spring.redis.pool.max-idle 8 Pool의 "Idle" 커넥션 최대 수(음수는 무제한)
spring.redis.pool.max-wait -1 Pool이 바닥났을 때 예외 발생 전에 커넥션 할당 차단의 최대 시간(단위 : ms, 음수는 무제한 차단)
spring.redis.pool.min-idle 0 Pool에서 관리하는 Idle 커넥션의 최소 수(양수만 유효)
spring.redis.timeout 0 Connection Timeout(단위 : ms)

BEAN 등록

RedisConfig.Class 작성 (Sample Source)

@Configuration
public class RedisConfig {
    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Bean
    public RedisConnectionFactory redisConnectionFactory(){
        return new LettuceConnectionFactory(host, port);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());

        // key:value 형태인 경우 시리얼라이저
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());

        //Hash 값 사용하는 경우 시리얼라이저
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());

        //default 시리얼라이저
        redisTemplate.setDefaultSerializer(new StringRedisSerializer());

        return redisTemplate;
    }
}

연동 확인

  • Spring Test Code를 통해 연동 확인
  • 정상 연동 시 addkey() 함수에서 지정한 값이 콘솔에 출력되며, Redis Server에서도 해당 key 값을 조회 할 수 있다.
@SpringBootTest
public class RedisConnectionTest {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    //key 추가 TEST Code
    @Test
    public void addkey(){
        ValueOperations<String, String> vop = redisTemplate.opsForValue();
        vop.set("member1", "inhwan");
        vop.set("member2", "minjun");
        vop.set("member3", "jongman”);
    }

    //key 얻어오기 TEST Code
    @Test
    public void getkey(){
        ValueOperations<String, String> vop = redisTemplate.opsForValue();
        String value1 = vop.get("member1");
        String value2 = vop.get("member2");
        String value3 = vop.get("member3");

        System.out.println(value1 + value2 + value3);
    }
}
  • 연동 결과(Console)

intellij console

  • 연동 결과(Redis)

redis key 조회


Redis 사용 방법

Spring Boot와 Redis를 연동하여 사용하는 방법은 RedisTemplate와 RedisRepository 2가지가 존재

RedisTemplate

  • Spring과 Redis 사이에서 커넥션을 관리

RedisTmeplate에서 제공하는 자료 구조 타입

메서드 명 Redis Type 설  명
opsForValue String String을 쉽게 Serialize/Deserialize 하는 메서드
opsForList List List를 쉽게 Serialize/Deserialize 하는 메서드
opsForSet Set Set을 쉽게 Serialize/Deserialize 하는 메서드
opsForZSet Sorted Set Sorted Set을 쉽게 Serialize/Deserialize 하는 메서드
opsForHash Hash Hash를 쉽게 Serialize/Deserialize 하는 메서드
  • 아래 소스는 기본 String 자료형을 처리(Sample)
@Service
public class RedisUtilsService {

    private final RedisTemplate<String, Object> redisTemplate;

    public RedisUtilsService(RedisTemplate<String, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    //redis에 데이터 저장, 만료 시간은 밀리세컨드 단위로 설정
    public void setData(String key, String value, Long expiredTime) {
        redisTemplate.opsForValue().set(key, value, expiredTime, TimeUnit.MILLISECONDS);
    }

    //redis 데이터 가져오기
    public String getData(String key) {
        return (String) redisTemplate.opsForValue().get(key);
    }

    //데이터 삭제
    public void deleteData(String key) {
        redisTemplate.delete(key);
    }
}

RedisRepository

  • Redis Entity 생성(Sample)
@Getter
@Builder
//설정한 값이 Redis의 key값 prefix로 사용됨
@RedisHash(value="redisToken")
public class RedisToken {
    @Id
    //redis key 값이 되며, redisToken:{id} 위치에 자동 증가 됨
    private String authId;
    //값으로 검색할 시 사용 됨
    @Indexed
    private String token;
    private String role;

    //만료 시간 설정
    @TimeToLive
    private long ttl;

    public RedisToken update(String token, long ttl) {
        this.token = token;
        this.ttl = ttl;
        return this;
    }
}
  • Redis Repository 생성
@Repository
public interface RedisTokenRepository extends CrudRepository<RedisToken, String> {
    Optional<RedisToken> findByToken(String token);
    Optional<RedisToken> findByAuthId(String authId);
}
728x90
저작자표시 비영리 변경금지 (새창열림)

'DataBase > Redis' 카테고리의 다른 글

[Redis]기능 TEST CLIENTS  (0) 2023.08.07
[Redis]Redis Cache  (0) 2023.07.20
Redis 설정(Security, Client, Memory)  (0) 2023.07.20
Redis 데이터 관리  (0) 2023.07.19
Redis 설정(GENERAL)  (0) 2023.07.12
  1. 개  요
  2. TEST 환경 정리
  3. Redis 연동 설정
  4. Redis 사용 방법
'DataBase/Redis' 카테고리의 다른 글
  • [Redis]기능 TEST CLIENTS
  • [Redis]Redis Cache
  • Redis 설정(Security, Client, Memory)
  • Redis 데이터 관리
JOTAN
JOTAN
기술 블로그
JOTAN
조탄 기술블로그
JOTAN
전체
오늘
어제
  • 목 록
    • Security
    • WEB
      • WebtoB
      • Apache
      • Nginx
    • WAS
      • Tomcat
      • JEUS
    • Observability
      • Fluentd
    • CI CD
    • DataBase
      • Redis
      • PostgreSQL
      • Victoria Metrics
    • Container Registry
      • Harbor
    • Docker
    • Kubernetes
    • Message Queue
      • Kafka
    • 개발
      • Spring Boot
      • Java
      • Shell Script
    • 기본지식
    • OS
      • Debian
      • Red Hat

블로그 메뉴

  • 홈

공지사항

  • 조'S IT 영역

인기 글

태그

  • apache ssl 설정
  • Kubernetes
  • ssl vhosts
  • 쿠버네티스 설치
  • 쿠버네티스
  • fluentd
  • kubernetes dns
  • 쿠버네티스 대시보드
  • apache vhosts
  • tomcat
  • kubernetes dashboard
  • 설치
  • hostaliases
  • 레디스 설정
  • 레디스
  • 인증서
  • harbor
  • victoria metrics
  • webtob
  • redis 설정
  • Redis TEST
  • Redis 기능 검증
  • KAFKA
  • victoria metrics 설치
  • kubernetes install
  • SSL
  • apache
  • nginx
  • Redis Cache
  • redis

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
JOTAN
Redis Spring 연동 및 사용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.