redis3 [Caching] 상품 주문 성능 개선 들어가며현재 진행하고 있는 프로젝트에서 레디스 캐시를 사용해 재고 관리를 하고 있다. 처음에는 write-throgh 전략을 사용했다. 데이터 정합성을 맞추는 게 가장 중요하다고 생각했다. 사용자에게 재고를 보여줄 때 정확해야하기 때문이다. 그러나 데이터베이스에 자주 접근하기 때문에 성능도 조금 떨어질 수 있다는 점이 trade-off로 존재한다.그래서 우선 가장 먼저 사용했던 전략에 대해 테스트를 수행했다. 그 다음에는 write-back 전략을 사용해서 테스트를 해보았다. 사실 write-through 방식을 사용하면서 캐시의 확실한 장점을 제대로 사용하지 못한다는 느낌이 들었다. 계속 데이터베이스에 들어갔다 나올거면 간김에 재고도 감소시키면 될텐데... 라는 생각이 들었다.캐시의 장점을 좀 더 활용.. CS/DB 2024. 5. 11. 동시성 이슈를 해결하기 위한 Redisson 적용기 들어가며현재 개인프로젝트로 예약 구매 이커머스 프로젝트를 진행하고 있다. 특정 시간에 구매 버튼이 활성화되는 예약 구매 시스템이다. 해당 시간에는 많은 트래픽이 몰리는 상황을 조건으로 걸 예정이다. 이를 구현하기 위해 동시성 이슈를 학습하고 이를 해결하는 방법에 대해 알아보았다. 다양한 방법이 존재했지만 그중에서도 Redis의 Redisson을 사용하기로 했다. 그래서 여러가지 방법과 그중에서도 Redisson을 선택한 이유에 대해서 이야기 해보려고 한다. 동시성 이슈란?쉽게 말하면 공유된 자원에 동시에 접근해 발생하는 문제를 말한다.결국 Race Condition(경쟁 상태)가 발생하게 되는 것인다. Race Codition 란?둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 .. CS/DB 2024. 5. 5. Spring 이메일 인증 구현하기 프로젝트 진행하면서 회원가입과 비밀번호 찾기 기능에서 이메일 인증을 적용하기로 했다. 처음에는 MySQL을 사용해해서 엔티티를 만들고 해당 엔티티의 상태를 나타내는 필드를 Enum으로 만들어 사용했다. 하지만 팀 내 회의를 통해 만료 기간을 지정할 수 있는 Redis를 사용하기로 결정했다. 이 글에서는 두 가지 방법을 비교할 예정이다. 먼저 엔티티 클래스를 비교할 것이다. 1. Entity 비교 1) MySQL 사용 @Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class EmailCode { @Id @Column(name = "email_code_id") @Gener.. Tech/Spring 2023. 9. 8. 이전 1 다음 728x90 반응형