728x90
반응형
목차는 redis 목차 에 있습니다.
source 는 Github 에 있습니다.
[Redis 4편] spring redis 환경 세팅 및 예제
spring redis 환경 세팅
- redisTemplate 으로 redis 에 접근하여 set/get 을 하는 예제입니다.
- 이 예제는 redis 서버가 백그라운드로 동작하고 있다고 가정하고 있습니다.
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
application.yml
spring:
redis:
host: localhost # redis host
port: 6379 # redis port
RedisConfiguration
- redisTemplate 을 사용하여 redis 연동을 할 것이기에 Bean 으로 만들어줬습니다.
- redis client 는 Lettuce 를 사용해서 만들었습니다.
- 예전에 Jedis 를 사용하였으나 여러가지 문제점이 있어 spring boot 2.0 부터 Lettuce 가 사용됐다고 합니다.
- Lettuce 의 장점은 Netty 기반이기에 비동기로 처리 가능하며, 이는 성능 향상에 도움이 됩니다.
@Configuration
public class RedisConfiguration {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Bean
public RedisTemplate<?, ?> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<byte[], byte[]> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setEnableTransactionSupport(true); // 해당 옵션이 켜져있을 경우 기존 트랜잭션에 참여할 수 있습니다. MULTI 명령어를 사용하여
return redisTemplate;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(host, port);
}
}
spring redis example
- 아래 예제는 api 를 통해 요청받은 request 를 redis 에 저장하고, api 를 통해 redis 에 있는 데이터를 조회하는 예제입니다.
- source 는 Github 에 있습니다.
- Application 을 실행시키고, Redis Server 를 수행한 후, API 를 호출하면 됩니다.
api
@GetMapping("/api/v1/members/{id}")
public ResponseEntity<?> getMembersUsingRedis(@PathVariable("id") String id) {
return ResponseEntity.ok(memberService.getMembersUsingRedis(id));
}
@PostMapping("/api/v1/members")
public ResponseEntity<?> saveMemberUsingRedis(@RequestBody MemberDto memberDto) {
memberService.saveMemberUsingRedis(memberDto);
return ResponseEntity.ok().build();
}
service
@Override
public MemberDto getMembersUsingRedis(String id) {
HashOperations<String, String, Object> hashOperations = redisTemplate.opsForHash();
Map<String, Object> result = hashOperations.entries(RedisConst.REDIS_MEMBER_KEY_PREFIX + id);
return MemberDto.of(result);
}
@Override
public void saveMemberUsingRedis(MemberDto request) {
HashOperations<String, Object, Object> hashOperations =
redisTemplate.opsForHash();
hashOperations.put(RedisConst.REDIS_MEMBER_KEY_PREFIX + request.getId(), "name", request.getName());
}
redis server 명령어 모니터링
- terminal 에서 아래 명령어를 수행하면 redis-server 들어오는 입력 명령어를 살펴볼 수 있습니다.
- 6379 는 redis server 의 port 입니다.
redis-cli -p 6379 monitor
결론
- spring redis 환경 세팅 및 예제에 대해서 간단히 정리했습니다.
reference
'NoSQL > redis' 카테고리의 다른 글
[Redis 6편] Redis 성능 (0) | 2022.06.11 |
---|---|
[Redis 3편] Redis 상세 정리 (key, 클러스터, 센티넬) (0) | 2022.01.13 |
[Redis 2편] Redis 상세 정리 (명령어, 싱글 스레드, 영속성) (0) | 2022.01.13 |
[Redis 5편] Redis 상세 정리 (트랜잭션과 Lock) (0) | 2022.01.05 |
[Redis 1] Redis 는 무엇이며 언제 사용하는가? (0) | 2022.01.04 |
댓글