HyunsooZo's TIL logo HyunsooZo's TIL

Redis?

Redis는 인메모리 데이터 구조 저장소(In-Memory Data Structure Store)로서, 오픈 소스 기반의 고성능 키-값 저장 시스템. Redis는 Remote Dictionary Server의 약자이며, 다양한 데이터 구조를 지원하고 메모리 기반 데이터 저장을 통해 빠른 데이터 액세스를 제공.
Redis의 특징  
자료구조 Redis는 기본적으로 키-값 저장소이지만, 다른 데이터 구조 사용가능.
문자열(String), 해시(Hash), 리스트(List), 세트(Set), 정렬된 세트(Sorted Set) 등.
속도 Redis는 메모리에 데이터를 저장하고 액세스하기 때문에 매우 빠른 응답 시간제공
지속성 Redis는 디스크에 데이터를 저장할 수도 있어, 데이터를 영속적으로 보관할 수 있음. 즉, 서버 재시작 후에도 데이터가 유지될 수 있음
분산 시스템 Redis는 여러 서버 간에 데이터를 분산하고 복제할 수 있는 기능을 제공. 이를 통해 데이터의 가용성과 확장성을 향상가능.
다양한 기능 Redis는 데이터 구조와 관련된 다양한 연산을 지원합. 예를 들어 집합 연산, 정렬된 집합 연산, 비트맵 연산 등
Pub/Sub 메시징 Redis는 발행-구독(Publish-Subscribe) 메시징 패턴을 지원. 이를 통해 메시지를 발행하고 구독하는 기능을 구현 가능.

Redis는 다양한 애플리케이션에서 캐싱, 세션 관리, 메시징 시스템 등으로 활용. 또한, 데이터베이스의 부하 분산, 실시간 분석, 잠금 메커니즘 등에도 사용될 수 있음. 간단한 설정과 높은 성능으로 인기 있는 데이터 저장 시스템 중 하나임.

Redis 사용

Redis 다운로드 경로(Win/Linux/Mac)
https://redis.io/docs/getting-started/installation/

Redis 간단한 명령어  
$ set myKey myValue 키, 값 을 쌍으로 저장
$ get myKey 데이터 조회
$ del myKey 데이터 삭제
$ keys * Redis의 모든 키 조회 (운영환경에서는 거의 안씀)

Redis 비밀번호 설정
Terminal


### Spring에 Redis 설정하기 

**1.** build.gradle -> 의존성 추가 
```xml
dependencies {
    ...
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    ...
}

2. application.yml 추가

  redis:
    host: localhost //상황에 맞춰서..
    port: 6379      //상황에 맞춰서..

3. Redis 관련 Config Bean 생성

@RequiredArgsConstructor
@Configuration
public class CashConfig {
    @Value("${spring.redis.host")
    private String host;
    @Value("${spring.redis.port")
    private int port;

    @Bean
    public CacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory){
        RedisCacheConfiguration conf = RedisCacheConfiguration.defaultCacheConfig()
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
        return RedisCacheManager.RedisCacheManagerBuilder
                .fromConnectionFactory(redisConnectionFactory)
                .cacheDefaults(conf)
                .build();
    }
    @Bean
    public RedisConnectionFactory redisConnectionFactory(){
//        RedisClusterConfiguration conf = new RedisClusterConfiguration(); -> cluster 사용시
        RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration();
        conf.setHostName(this.host);
        conf.setPort(this.port);
        return new LettuceConnectionFactory(conf);
    }
}

TOP