본문 바로가기

Redis9

트러블슈팅 : 목표에 오늘의 DONE 기록시 중복요청 분산락으로 방지하기 (2/2) https://thiswooin.tistory.com/147 트러블슈팅 : 목표에 오늘의 DONE기록시 동시성 문제로 인한 중복 생성 (1/2)문제상황동시에 done 테이블에 접근하여 오늘 생성된 데이터가 있는지 조회각 요청 모두 조회된 데이터가 없다고 판단하루에 하나만 존재해야하는 데이터가 두개가 동시에 생성됨한마디로, 우thiswooin.tistory.com지난 시간 연관관계가 포함된 객체를 비관적락으로 중복조회를 한 뒤 하나씩 쓰기 시도를 하려다가,FK를 포함한 객체에 비관적 락을 걸었을 때 인덱스 페이지 전체에 레코드락이 걸려 데드락이 걸리는 현상이 발생하였다. 처리중인 요청을 AOP를 통해 set에 담아 체크하는 방식의 시도, 그리고 Redis를 활용하여 분산락 구현을 통한 중복요청 방지를 구현.. 2024. 8. 5.
[리팩토링] 작은 깨달음 : 리팩토링을 하기엔 데이터 수가 너무도 적었다 지난 번 Redis 서버가 미국에 있는 바람에 캐싱을 적용하자 오히려 느려졌다(?) https://thiswooin.tistory.com/134 [리팩토링] 레디스 캐싱을 통한 인증과정 유저정보 조회 속도 개선하기 개발환경 Java 17 / Spring Boot 3.x / Spring Security 3.x / MySQL 8.0 / Redis / JWT 테스트 DB는 로컬환경에서 진행. 현재코드 Spring Security를 통해 인증이 필요한 API의 경우 JWT 토큰을 기반으로 유저정보를 가져온 thiswooin.tistory.com ElastiCache는 추후 적용해보려 하고 우선은 빠르게 EC2 인스턴스에 Redis-server를 설치하여 이를 통해 해결해보려 한다. Redis 설치 on EC2 .. 2023. 11. 28.
TIL 230907 : Redis 5-0 - 정말로 빠른지 궁금하다. (미해결) 인증번호를 MySQL에 저장하고 조회하는 것에서 Redis에 저장, 조회로 변경했다. 단기간 사용할 데이터이기도 하고 빠른 조회의 속도가 장점이길래 한 번 도입해봤는데, 트래픽이 적은 입장에서 빨라졌는 지 체감이 되질 않는다. 시도한 방법 0. 단순히 API를 여러번 돌려봤다. : SMTP를 통해 메일 전송까지 하는 API이다 보니 해당 소요시간은 DB차이를 체크하기에 너무 부적합했다. 1. 시스템시간을 DB 저장 메소드 실행 전 후 기록해서 차이를 log로 출력 : 아래처럼 save메소드 앞뒤로 시스템 시간을 변수로 담아 그 차이를 출력 해봤다. long beforeTime = System.currentTimeMillis(); // DB 저장 전 시간 VerificationCode verificatio.. 2023. 9. 14.
TIL 230906 : Redis 4 - 클라우드에 서버 띄우기 (Redislabs) 지금까지는 로컬에 Redis를 띄워뒀는데, 이제는 클라우드에 띄워보기로 한다. 우선은 aws ec2 인스턴스를 새로 만들기보다는 간편하게 클라우드 환경을 만들어주는 Redislabs를 활용할 예정이고, 이후 캐싱전략시에 다시 리팩토링 해보려 한다. Redislabs DB생성 Redislabs라는 공식으로 지원하는 클라우드 콘솔이다. 30MB가 무료다. 딱 연습용으로 알맞아 보인다. 익숙한 AWS로 만들고 Region의 경우에는 한정되어 있다. (서울이 없다) DB연결 위처럼 간편하게 DB가 생성된 걸 확인할 수 있다. 이제 연결해야 한다. Endpoint의 'Connect'버튼을 누르면 아래와 같이 친절하게 나온다. CLI에 연결해줄 명령어를 자동으로 작성해준다. Host, Password, Port 이.. 2023. 9. 13.
TIL 230904 : Redis 2-1 - RefreshToken을 이용해 자동으로 AccessToken 재발급하기 (Spring Security) https://thiswooin.tistory.com/94 TIL 230901 : Redis 2 - RefreshToken구현하기. 발급 및 Redis저장. (Spring Security) https://thiswooin.tistory.com/92 TIL 230830 : Redis 1 - Spring에서 연동하기 (lettuce, jedis, RedisTemplate, CRUDRepository 활용) 지난 시간에 로컬로 Redis서버를 실행하고 RedisInsight라는 GUI를 이용해 Redis 데이터를 저장해 thiswooin.tistory.com RefreshToken을 발급하고 클라이언트로 보내는 과정까지 했다. 이번엔 RefreshToken의 존재이유인 AccessToken만료시 Refresh.. 2023. 9. 8.
WIL 230903 : 처음엔 낯설고 낯선게 어렵다. (+Redis도) FACTS 이번 일주일 동안 있었던 일, 내가 한 일 : 테스트 코드를 붙잡다가 단위테스트코드에서 우선 일단락했다. Redis 서버를 적용하는 방법을 계속해서 도전해보고 싶었고, 드디어 여러가지 파편된 정보들을 잘 분류하고 재조합해서 나만의 방식으로 습득했다. FEELINGS 나의 감정적인 반응, 느낌 : 처음이라 낯설지만 한번 날 잡아서 정면돌파해보고 싶었던 개념들이 계속해서 있었는데, 이번에도 S3서버, 테스트코드에 이어서 Redis에 도전해본 것인데, 역시나 처음엔 어렵지 않지만 낯선것들 투성이고, 결국엔 낯선게 나에게 어렵게 다가왔다. FINDINGS 그 상황으로부터 내가 배운 것, 얻은 것 : 이제 슬슬 정해진 명확한 정답이 있는 코드들보다는 오답만이 명확한 범위로 들어가고 있다고 느꼈다. 이번.. 2023. 9. 4.