SpringBoot + Redis 연동하기

반응형
728x90
반응형

SpringBoot 에 Redis를 연동해보자

1. build.gradle 에 dependency 를 추가한다.

//redis
compile "org.springframework.boot:spring-boot-starter-data-redis"
compile "redis.clients:jedis:2.9.0"
compile "org.springframework.session:spring-session-data-redis"

 

2. application.yml 파일에 redis 정보를 추가한다. (.properties 파일)

#Redis
redis:
  host: 127.0.0.1
  port: 6379

 

3. RedisConfig.java 를 생성한다.

@Configuration
public class RedisConfig {
    @Value("${redis.host}")
    private String host;

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

    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory jedisConnectionFactory = null;

        try {
            RedisStandaloneConfiguration conn = new RedisStandaloneConfiguration();
            conn.setHostName(host);
            conn.setPort(port);

            jedisConnectionFactory = new JedisConnectionFactory(conn);

        } catch (Exception e) {
        }

        return jedisConnectionFactory;
    }

    @Bean(name="redisTemplate")
    public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
        final RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericToStringSerializer<>(Object.class));
        redisTemplate.setValueSerializer(new GenericToStringSerializer<>(Object.class));

        redisTemplate.setConnectionFactory(jedisConnectionFactory);

        return redisTemplate;
    }

}

 

여기서 사용된 @Value 어노테이션은 2번의 application.yml 에서 가져오는 것이다.

  • 위 .yml 파일에 추가한 host 정보를 가져온다.
@Value("${redis.host}")
  • 위 .yml 파일에 추가한 port 정보를 가져온다.
@Value("${redis.port}")

 

4. RedisConroller.java 를 생성하자. Redis에 접속하여 data를 insert 하고 select 하는 Sample Test API 를 만든다.

@RestController
@RequestMapping("/redis")
public class RedisController {

    private final RedisTemplate<String, String> redisTemplate;

    public RedisController(RedisTemplate<String, String> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    @ApiOperation(value = "redis key 등록")
    @PostMapping("")
    public ResponseEntity<?> addRedisKey(@ApiParam(value = "key", defaultValue = "") @RequestParam String key,
                                         @ApiParam(value = "value", defaultValue = "") @RequestParam String value) {
        ValueOperations<String, String> vop = redisTemplate.opsForValue();

        vop.set(key, value);
        ...
    }

    @ApiOperation(value = "redis value 조회")
    @GetMapping("/{key}")
    public ResponseEntity<?> getRedisKey(@ApiParam(value = "key", defaultValue = "") @PathVariable String key) {
        ValueOperations<String, String> vop = redisTemplate.opsForValue();
	
    	return vop.get(key)
        ...
    }
}

위 메소드에서 사용된 redis의 함수에 대해 간단히 살펴보자.

 

key, value 를 지정하여 redis에 등록한다.

 

vop.set(key, value);

 

key 에 해당하는 데이터를 조회한다.

 

vop.get(key)

 

 

반응형

Designed by JB FACTORY