HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
팀 02 : 머쓱한녀석들
팀 02 : 머쓱한녀석들
/
🎏
BackEnd
/
🕋
기술문서
/
redis 사용법

redis 사용법

날짜
Jul 19, 2022
담당자
태그
redis
완료여부
완료

Redis

종류
  • Lettuce
  • Jedis
Jedis 보다 Lettuce 를 쓰자
Java의 Redis Client는 크게 2가지가 있습니다. 둘 모두 몇천개의 Star를 가질만큼 유명한 오픈소스입니다. 이번 시간에는 둘 중 어떤것을 사용해야할지에 대해 성능 테스트 결과 를 공유하고자 합니다. 모든 코드와 Beanstalk 설정값은 Github 에 있으니 참고하세요. 레디스외 병목현상을 방지하기 위해 Nginx, 커널 파라미터 등은 모두 적절하게 튜닝 된 상태입니다. 의존성 환경은 아래와 같습니다.
Jedis 보다 Lettuce 를 쓰자
https://jojoldu.tistory.com/418
Jedis 보다 Lettuce 를 쓰자
 
지원하는 자료구조
  • 하단의 이외에도 여러 자료구조를 지원합니다.
notion image
 
사용법
  • Spring Data Redis
    • RedisTemplate
      • 설정을 위한 redisConfig 클래스를 만들어줘야함
      • RedisTemplate를 사용한 Transaction은 롤백을 지원하지 않는다
      • @Transactional 어노테이션을 걸어주면 됨
      • @Configuration @EnableTransactionManagement public class RedisTxContextConfiguration { @Bean public StringRedisTemplate redisTemplate() { StringRedisTemplate template = new StringRedisTemplate(redisConnectionFactory()); // explicitly enable transaction support template.setEnableTransactionSupport(true); return template; } @Bean public PlatformTransactionManager transactionManager() throws SQLException { return new DataSourceTransactionManager(); } }
        ValueOperations<String, String> valueOperations = redisTemplate.opsForValue(); valueOperations.set(rRTKey + user.getIdx(), refreshToken); valueOperations.get(~)
       
    • RedisRepository
      • 어노테이션 기반
      • @Getter @Setter @RedisHash("member") public class Member { @Id private String id; private String name; private int age; @TimeToLive private Long expiredTime; public Member(String name, int age) { this.name = name; this.age = age; } }
        public interface MemberRedisRepository extends CrudRepository<Member, String> { }
      Spring Data Redis
      Spring Data uses Spring framework's core functionality, including: While you need not know the Spring APIs, understanding the concepts behind them is important. At a minimum, the idea behind Inversion of Control (IoC) should be familiar, and you should be familiar with whatever IoC container you choose to use.
      Spring Data Redis
      https://docs.spring.io/spring-data/redis/docs/current/reference/html/#redis.repositories
 
 
Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository
https://wildeveloperetrain.tistory.com/21 인메모리 데이터 저장소 Redis 기본 개념에 대한 포스팅입니다. * Redis 설치 이후 진행과정입니다. Spring Boot에서는 Spring Date Redis를 통해 Lettuce, Jedis라는 두 가지 오픈소스 Java 라이브러리를 사용할 수 있습니다. Lettuce는 별도의 설정 없이 사용할 수 있으며 Jedis를 사용하고자 하시면 별도의 의존성을 필요로 합니다. * 해당 포스팅은 Lettuce를 통해 Redis를 사용하는 과정을 담고 있습니다.
Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository
https://wildeveloperetrain.tistory.com/32
Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository
Spring Boot 에서 Redis 사용하기
Spring Boot 에서 spring-data-redis 라이브러리를 활용해서 Redis 를 사용하는 방법을 알아봅니다. Redis 에 대한 개념과 로컬 설치 방법은 Redis 설치 및 명령어 글을 확인해주세요. Java 의 Redis Client 는 크게 두 가지가 있습니다. Jedis 와 Lettuce 인데요. 원래 Jedis 를 많이 사용했으나 여러 가지 단점 (멀티 쓰레드 불안정, Pool 한계 등등..)
Spring Boot 에서 Redis 사용하기
https://bcp0109.tistory.com/328
Spring Boot 에서 Redis 사용하기
사용법은 생각보다 간단한듯. 마치 해시맵을 쓰는 느낌?
 
트랜잭션
  • Redis에서 지원하는 Transaction의 구현이 기존에 익히 알고있던 RDBMS(MySQL, MS-SQL...) 과는 동작이 달라서 정확한 동작방식을 알고 있어야함
Spring Data Redis
Spring Data uses Spring framework's core functionality, including: While you need not know the Spring APIs, understanding the concepts behind them is important. At a minimum, the idea behind Inversion of Control (IoC) should be familiar, and you should be familiar with whatever IoC container you choose to use.
Spring Data Redis
https://docs.spring.io/spring-data/redis/docs/current/reference/html/#tx
[redis] 트랜잭션(Transaction) - 이론편
안녕하세요. 오늘은 redis의 트랜잭션에 대한 이론에 대해서 알아보도록 하겠습니다. 그리고 이후 포스팅에서 실제로 Spring Data Redis를 이용하여 redis의 트랜잭션을 실습해보도록 하겠습니다. 트랜잭션이란 무엇인가요 ? [데이터베이스] 트랜잭션과 격리성 포스팅에서 이전에 저는 트랜잭션에 대해서 별도 포스팅을 한적이 있습니다. 간단하게 말씀드리면 트랜잭션은 나누어지지 않는 최소한의 단위로 만들어 All Or Nothing 전략을 취할 수 있도록 해주는 단위입니다.
[redis] 트랜잭션(Transaction) - 이론편
https://sabarada.tistory.com/177
[redis] 트랜잭션(Transaction) - 이론편
Spring Redis Template Transaction
Spring에서 사용하는 Transaction을 RedisTemplate에도 쓰고 싶을 때가 있는데, Redis에서 지원하는 Transaction의 구현이 기존에 익히 알고있던 RDBMS(MySQL, MS-SQL...) 과는 동작이 달라서 정확한 동작방식을 알고 있어야 로직을 짜는데 도움이 될 것 같아서 작성해본다. 익히 알고있는 트랜잭션은 데이터의 불일치를 방지하고, 트랜잭션 내에 있는 로직이 원자성으로 실행됨을 보장해준다. 예컨데 아래와 같은 로직이 있다고 치자.
https://gompangs.tistory.com/entry/Spring-Redis-Template-Transaction
Spring Redis Template Transaction
 
 
  • 캐시 만료 시간 설정
    • TimeToLive
    •  

결론

  • 최대한 써보는 쪽으로