[Redis] Redis Starts with Docker And WebFlux(2)

    728x90
    반응형

    2023.04.09

    개발환경구성

    - FE: React-Native

    - BE: WebFlux

    - DB: MySQL, Redis(Docker)

    - IDE: Android Studio, SpringBoot(2.7.3)

    - JDK: 11

    - SERVER: AWS

     

     

    의존성 추가(build.gradle)

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

    1) WebFlux는 리액티브 프로그래밍이므로 redis-reactive Jar가 추가로 필요함

     

     

    Redis 설정파일 (RedisConfig.java)

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
    
    
    @Configuration
    @EnableRedisRepositories
    public class RedisConfig {
    
        @Bean
        public RedisConnectionFactory redisConnectionFactory() {
            return new LettuceConnectionFactory("호스트", 포트);
        }
    
        @Bean
        public RedisTemplate<?, ?> redisTemplate() {
            RedisTemplate<byte[], byte[]> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(redisConnectionFactory());
            return redisTemplate;
        }
    }

    1) Redisson, Lettuce, Jedis 중 서버환경에 맞는 Redis Client를 사용

      i) Redisson: Netty기반(비동기 이벤트 지원). 쓰기 까다로움. Lock지원. PipeLining지원.

      ii) Lettuce: Netty기반(비동기 이벤트 지원). 높은 성능. 낮은 지연시간. PipeLining지원(Redisson 보다 뛰어남).

      iii) Jedis: 동기처리. PipeLining지원(동기처리이므로 성능이 뛰어나지 않음)

    ※파이프라이닝(PipeLining): 여러 개의 명령어를 하나의 Request로 묶어 처리하는 기능. Queue에 Request를 추가한 후 순서대로 처리함.

     

    2) LettuceConnectionFactory 객체로 Redis와 연결 생성

    3) 생성된 연결로 RedisTemplate 인스턴스 생성

     

    출처: 데엔잘하고싶은데엔

     

    [Spring][MVC] RedisTemplate으로 Spring과 Redis와 연동하기

    2022.02.06 - Mac M1에서 가능한 Redis GUI Client 프로그램 : Medis2 2022.02.07 - [Redis] 레디스와 캐시 그리고 데이터구조 이번엔 spring에서 redis를 어떻게 연동하는지 알아 볼 것이다. 안그래도 내가 궁금했던

    pearlluck.tistory.com

     

     

    String.Key-Value SET

    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.data.redis.core.ValueOperations;
    import org.springframework.http.MediaType;
    import org.springframework.stereotype.Component;
    import org.springframework.web.reactive.function.server.ServerRequest;
    import org.springframework.web.reactive.function.server.ServerResponse;
    
    import reactor.core.publisher.Mono;
    
    /**
     * @Desc Router에 정의된 URL과 매핑된 메소드명을 Handler 메소드로 작성
     */
    @Component
    public class Handler {
    
        @Autowired
        private StringRedisTemplate redisTemplate;
    
        public Mono<ServerResponse> redisSessionTest(ServerRequest request) {
            ValueOperations<String, String> ops = redisTemplate.opsForValue();
            ops.set("TJOO", "DEVELOG FOR AA");
            Map<String, String> map = new HashMap<>();
    
            map.put("SESSION.PUT.KEY", ops.get("TJOO"));
            return ServerResponse.ok().contentType(MediaType.TEXT_EVENT_STREAM).body(Mono.just(map), HashMap.class);
        }
    }

    1) Autowired 또는 getBean으로 redisTemplate 객체 주입

    2) redisTemplate.opsForValue() API를 사용해 Key와 Value의 자료형을 String으로 선택

     

     

    redis-cli

    # bash 실행
    [AWS계정@IP주소]$ sudo docker exec -it redis-container /bin/bash
    
    # redis-cli 실행
    [bash:/data]$ redis-cli
    
    # String Key 조회
    127.0.0.1:6379> keys *
    1) "TJOO"
    
    # String Value 조회
    127.0.0.1:6379> get TJOO
    1) "DEVELOG FOR AA"

    1) Redis 데이터베이스와 상호작용할 수 있는 Redis Command Line Interface(CLI) 도구
    2) Redis 서버에 연결하여 데이터를 조회, 수정, 삭제 등의 기능을 사용

    3) keys, get 등의 명령어를 사용해 저장된 값 조회(*은 모든값 조회)

     

     

    이전포스팅

     

    [Redis] Redis Starts with Docker(1)

    2023.04.02 Redis 1) REmote DIctionary Server의 약자. DB, Cache 및 스트리밍 엔진으로 사용되는 오픈소스 2) In-Memory 데이터 구조 저장소. Key-Value 기반의 NoSQL DBMS 3) String, Hash, List, Set 등의 데이터 구조를 지원 4

    limreus.tistory.com

     

    728x90
    반응형

    댓글