본문 바로가기
Spring/Reids

[Spring Redis-Session] Spring Redis Session With Docker

by 행운의나무 2021. 8. 27.
728x90
반응형

 

Docker를 이용하여 Reids 서버 구동

  • 도커를 재시작했을 때, redis-cli에 다시 접속 : docker exec -it dockerRedis redis-cli
docker pull redis
docker network create redis-net

#dockerRedis라는 이름의 컨테이너를 redis-net 네트워크에 붙여 실행한다.
docker run --name dockerRedis -p 6379:6379 --network redis-net -d redis redis-server --appendonly yes

#redis-cli로 dockerRedis에 접속한다.
docker run -it --network redis-net --rm redis redis-cli -h dockerRedis

Spring Boot Redis Session 연결

  • 의존성 추가
    • implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    • implementation 'org.springframework.session:spring-session-data-redis'
  • redis 연결 설정
spring:
  redis:
    host: localhost
    password:
    port: 6379
    pool:
      max-idle: 8
      min-idle: 0
      max-active: 8
      max-wait: 1
  session:
    timout: 600
    store-type: redis
    redis:
      flush-mode: on-save
  • RedisConfig : Redis 관련 설정
@Configuration
public class RedisConfig {

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

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

    @Bean
    public RedisConnectionFactory redisConnectionFactory(){
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        return connectionFactory;
    }

    @Bean
    public StringRedisTemplate stringRedisTemplate(){
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setKeySerializer(new StringRedisSerializer());
        stringRedisTemplate.setValueSerializer(new StringRedisSerializer());
        stringRedisTemplate.setConnectionFactory(redisConnectionFactory());
        return stringRedisTemplate;
    }
}
  • controller
    • HttpSession을 파라미터로 입력 받아야 session 정보를 Reids에서 다룰 수 있다.
@RestController
public class RedisController {
    @GetMapping("/redis-session")
    public ResponseEntity redisSession(HttpSession httpSession){
        return ResponseEntity.ok().body("session : " + httpSession);
    }
}
  • 테스트
    • 목표 : localhost:8080/redis-session 접속 후 dockerRedis에서 key값 확인
    • 터미널에서 redis-cli 접속 : docker exec -it dockerRedis redis-cli
    • 결과
    • redis-session

쿠팡으로 연결 클릭

 

제주삼다수 그린

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형