[Redis] Redisson 설정 해보자.

2025. 4. 2. 23:26DB/REDIS

개요

최종 프로젝트를 진행을 하면서 동시성 제어를 맡게 되었다.

 

다른 락도 같이 공부를 할 것인데, 일단 기능을 만들어두고 공부를 해야겠다고 생각을 하여서 Redis부터 진행을 하게 되었다.

 

이번에 Redis 설정을 진행을 하면서 설정법에 대해서 알게 되어 정리를 남긴다.

 


Redis 의존성 종류에 대해서 알아보자.

implementation 'org.redisson:redisson:3.43.0'

implementation 'org.redisson:redisson-spring-data-34:3.45.1'

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

 

이렇게 3가지가 있는 것을 확인을 하였다.

 

간단하게 정리를 하면

가장 위에 있는 의존성은 순수 자바에서 사용하는 Redis 의존성을 추가하는 방법이다.

 

중간에 있는 의존성은 Redisson을 사용하는 Redis 의존성이다.

 

마지막으로 스프링부트 스타터 데이터 Redis는 Jedis 또는 Lettuce를 사용하지만 Redisson과 통합하려면 추가적인 설정이 필요하다.

 

 


이어서 Redisson 설정 방법에 대해서 알아보자.

implementation 'org.redisson:redisson-spring-data-34:3.45.1'

일단 최신의 Redisson 의존성을 추가를 하여야한다.

 

application.yml

spring:
  redisson:
    config: classpath:redisson.yml

config 파일을 추가를 하였다.

 

추후에 여러 세팅을 추가를 할 수 있어서 파일을 따로 분리를 하였다.

 

redisson.yml

singleServerConfig:
  address: "redis://localhost:6379"

 

해당 내용은 추가를 하지 않아도 된다. 이유는 추후에 말하겠다.

서버 이름이 달라지는 경우만 추가를 하자.

 

RedissonConfig.class

@Configuration
@EnableCaching
public class RedissonConfig {

	@Bean
	public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
		return new RedissonConnectionFactory(redisson);
	}

	@Bean(destroyMethod="shutdown")
	public RedissonClient redissonClient(@Value("classpath:/redisson.yml") Resource configFile) throws IOException {
		Config config = Config.fromYAML(configFile.getInputStream());
		return Redisson.create(config);
	}
}

 

이제 Config파일을 추가를 하면 된다.

 

캐시로 사용을 할 것이라.

@EnableCashing을 추가를 하였다.

 

만약에 기본적으로 공부용 및 추가 설정을 안 할 것이고 로컬에서만 사용을 할 것이라면

@Bean(destroyMethod="shutdown")
public RedissonClient redissonClient() throws IOException {
	return Redisson.create();
}

이 값만 추가를 해주면 된다.

 

이유는 다음과 같다.

public static RedissonClient create() {
    Config config = new Config();
    config.useSingleServer().setAddress("redis://127.0.0.1:6379");
    return create(config);
}

static method로 현재 블로그 주인장이 만든 Redisson.yml값과 똑같은 내용이 이미 들어가져 있기 때문이다.

 

추후 설정을 바꿀 것이다 혹은 주소값이 기본 값이 아니다 하면 다음 세팅을 사용하면 된다.

@Bean(destroyMethod="shutdown")
public RedissonClient redissonClient(@Value("classpath:/redisson.yml") Resource configFile) throws IOException {
	Config config = Config.fromYAML(configFile.getInputStream());
	return Redisson.create(config);
}

 

Config 파일을 yaml파일을 불러와서 사용을 할 수 있도록 메서드가 있었다.

 

 

기본적으로 Redisson을 사용할 수 있는 방법을 공식 홈페이지에서 알려준다.

 

Integration with Spring - Redisson Reference Guide

Integration with Spring Spring Boot Starter Integrates Redisson with Spring Boot library. Depends on Spring Data Redis module. Supports Spring Boot 1.3.x - 3.4.x Usage Add redisson-spring-boot-starter dependency into your project: Redisson PRO Maven pro.re

redisson.pro

@Configuration
@EnableRedisHttpSession
public class SessionConfig extends AbstractHttpSessionApplicationInitializer { 

     @Bean
     public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
         return new RedissonConnectionFactory(redisson);
     }

     @Bean(destroyMethod = "shutdown")
     public RedissonClient redisson(@Value("classpath:/redisson.yaml") Resource configFile) throws IOException {
        Config config = Config.fromYAML(configFile.getInputStream());
        return Redisson.create(config);
     }

}

 

해당 내용은 Spring Http Session configuration 내용인데,

지금 블로그 주인장이 사용하려는 분산락과 연관이 있는 것인지는 아직 잘 모르겠다.

 

Redis 공식 홈페이지에서 각 Redission의 예시를 전부 올려준다.

정보를 찾아보고 싶다면 일단 공식 Github을 들어가 보는 것이 좋을 것 같다.

 

GitHub - redisson/redisson-examples: Redisson java examples

Redisson java examples. Contribute to redisson/redisson-examples development by creating an account on GitHub.

github.com

 

 


느낀 점

이번 분산락을 개발을 해보면서 블로그를 보면서 만들면 야매로 만드는 것 같아서 공식 홈페이지만 최대한 보면서 해보려고 하였다.

 

뭔가 처음에 찾지도 못하고, 이상한 것만 나오는 것 같아 공식 홈페이지가 별로라고 이야기를 하고 있었는데,

찾아보니 예시도 전부 올려주고, 어떻게 세팅을 해야 되는지 적어준 부분이 많았다.

 

예시도 종류별로 많고, 퀄리티도 좋은 것 보니 당분간 정보를 찾을 때는 공식 홈페이지를 찾아서 진행을 하지 않을까 싶다.

 

다음부터는 일단 공식 홈페이지, 공식 가이드 등 공식을 믿고 먼저 찾아봐야겠다는 생각이 든다.