DataBase

SpringBoot Redis 설정(Window)

조민욱 2024. 12. 10. 19:12

1. Redis 설치를 진행해준다. ( 링크에서 msi 파일을 다운받아준다.)

 

https://github.com/microsoftarchive/redis/releases

 

Releases · microsoftarchive/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

github.com

 

2. 설치 후 파일 내부에 redis-cil.exe를 클릭해서 실행해준다.

 

3. 실행된 cmd에 접속해서 ping을 입력했을 때 PONG 나오면 정상 설치 연결

 

4. Spring boot 연결

  data:
    redis:
      host: localhost
      port: 6379

 

5. Bean 설정

@Configuration
@RequiredArgsConstructor
@EnableCaching
public class RedisConfig {

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

        // JSON 직렬화 설정
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.findAndRegisterModules();

        GenericJackson2JsonRedisSerializer jsonSerializer
                = new GenericJackson2JsonRedisSerializer(objectMapper);

        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(jsonSerializer);
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(jsonSerializer);

        template.afterPropertiesSet();
        return template;
    }

    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.findAndRegisterModules();

        // JSON 직렬화 설정
        GenericJackson2JsonRedisSerializer jsonSerializer
                = new GenericJackson2JsonRedisSerializer(objectMapper);

        // RedisCacheConfiguration 설정
        RedisCacheConfiguration cacheConfig = RedisCacheConfiguration.defaultCacheConfig()
                .serializeKeysWith(
                        RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(
                        RedisSerializationContext.SerializationPair.fromSerializer(jsonSerializer));

        return RedisCacheManager.builder(connectionFactory)
                .cacheDefaults(cacheConfig)
                .build();
    }
}

 

6. 캐싱이 필요한 Service 로직에 어노테이션을 추가하여 설정을 진행해준다.

    @Cacheable(value = "stores", key = "'list_')

 

7. 애플케이션을 실행하고 redis에 다음과 같이 체크 

keys *
"stores::list_

== 해당 목록이 보여진다면 

GET stores::list_ 

== 다음을 입력해서 저장된 데이터를 확인할 수 있다