SpringBoot

[SpringBoot] Spring boot에서 간단한 Redis 설정 및 사용 예제

Jeong Jeon
반응형

필자는 SpringBoot를 독학하면서, 알고있던 지식들로 간간히 검색하며 시간날때마다 사이드 프로젝트를 만들고있다.

Spring boot와 Spring data Jpa를 알고싶어서 만들기 시작했는데,

기존에 사용했던 SpringFramework와는 설정 부분이 달라 애를 먹는 점이 종종있다.

 

오늘은 Redis 설정을 한뒤, Interceptor에서 Redis를 사용해 보려고한다.

간단하게 캐시설정은 잡지 않고 Redis를 사용할 수 있을정도만 세팅해보았다.

다음번에 Redis 설정부분을 제대로 작성하겠다.

 

1). build.gradle

Redis를 사용하기 위해 Dependency를 등록해준다.

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

 

2). application.properties

기본적인 Redis 세팅정보를 작성해놓는다.

#Redis설정
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379

 

3). RedisConfig.java

기본적으로 Config파일을 작성해준다.

필자는 Dto를 만들어 Redis에 입력하기위해 GenericJackson2JsonRedisSerializer();를 사용하여 Serialize 오류를 해결하였다. (기본 StringRedisSerializer로 사용하면 Serialized 오류가 발생한다.)

@Configuration
@EnableRedisRepositories
public class RedisConfig {

	@Value("${spring.redis.host}")
	private String redisHost;

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

    @Bean
    public LettuceConnectionFactory redisConnectionFactory() {
    	RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    	redisStandaloneConfiguration.setDatabase(0);
    	redisStandaloneConfiguration.setPort(redisPort);
    	redisStandaloneConfiguration.setHostName(redisHost);
        return new LettuceConnectionFactory(redisStandaloneConfiguration);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        // Hash Operation 사용 시
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        // 혹은 아래 설정으로 모든 Key / Value Serialization을 변경할 수 있음
        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
        return redisTemplate;
    }

//    @Bean
//    public StringRedisTemplate stringRedisTemplate() {
//        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
//        stringRedisTemplate.setKeySerializer(new StringRedisSerializer());
//        stringRedisTemplate.setValueSerializer(new StringRedisSerializer());
//        stringRedisTemplate.setConnectionFactory(redisConnectionFactory());
//        return stringRedisTemplate;
//    }
}

 

4). Service.java

사용하는 부분에서는 @Resource로 내가 정의한 Bean의 이름으로 RedisTemplate을 가져와 사용하였다.

이때 RedisTemplate의 HashOperation, ValueOperation등을 사용할 수있다.

 

4-1). DI

@Resource(name="redisTemplate")
	private HashOperations<String, String, Object> hashOperations;
    
@Resource(name="redisTemplate")
	private ValueOperations<String, Object> valueOperations;

 

4-2). 사용

DI 받은 RedisTemplate을 사용하여 간단하게 사용할 수 있다.

hashOperations.put("key","key2",<Object>);
valueOperations.set("key",<Object>);

 

우선 여기까지는 잘 돌아가는것 확인 되었으니..!

조금더 자세하게 옵션하나하나 확인하면서 다듬어야 될것같다

반응형