일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 코테
- LV03
- LV0
- CoffiesVol.02
- 데이터 베이스
- 프로그래머스
- SQL
- Lv.0
- LV01
- 포트폴리오
- 디자인 패턴
- CI/CD
- LV.02
- Redis
- 연습문제
- 일정관리 프로젝트
- GIT
- 이것이 자바다
- 알고리즘
- spring boot
- mysql
- docker
- Join
- LV02
- S3
- 일정관리프로젝트
- Til
- Java
- JPA
- LV1
- Today
- Total
목록Redis (9)
코드 저장소.
목차1. 왜 통합 테스트가 필요했는가?2. Testcontainers 기반 인프라3. 테스트4. 회고 1. 왜 통합 테스트가 필요했는가?이번 일정 관리 프로젝트는 기획 단계부터 Kafka, Redis, RDS(MySQL) 등 다양한 외부 시스템과의 연동을 기반으로 설계되었습니다. 특히 Kafka를 통한 이벤트 기반 구조, Redis를 활용한 캐시 및 분산 락 처리, RDS와의 스케줄러 기반 트랜잭션 흐름 등은 단순한 로직 검증을 넘어서, 실제 환경과 유사한 상황에서 전체 동작 흐름을 검증할 필요가 있었습니다. 처음부터 mock/stub 기반 단위 테스트 대신, "외부 시스템을 포함한 통합적인 테스트 환경을 어떻게 구성할 것인가?"가 주요 고민이었습니다. 실제 테스트 중 직면했던 이슈는 다음과 같습니다:K..

목차1.문제 상황2.고안 3.적용 및 결과 1.문제 상황가게 정보를 직접 입력을 하는 것보다는 가게정보를 카카오맵에서 가져와서 정보를 다루는 것이 낫다고 해서 크롤링을 함. 기존의 방식은 사진과 같습니다. 이 방식에서 여러 문제가 있는데 보완을 해 볼점은 다음과 같습니다.한번 작업을 완료를 하는데 시간이 많이 걸림크롤링에서 가게가 중복으로 저장크롤링 작업시 예상치 못하게 작업이 중단된 경우 중단된 곳까지 저장이 됨.2.고안 우선은 현 상황에서의 문제점을 해결하기 위해서 다음과 같은 생각을 해봤습니다. 크롤링 작업 속도가 느리다.Redis를 사용해서 작업 동시에 가게 정보를 캐싱하기.크롤링에 중복으로 저장되는 가게내용크롤링 작업시 미리 csv파일을 만들어서 데이터 백업 겸 중복으로 저장을 하지 않게 1차로..

목차1.문제상황2.분산락?? 3.코드 및 검증 1.문제상황현재 내 프로젝트에서 자유게시글에서 조회수와 좋아요 기능과 가게 댓글에 좋아요 기능에서 게시글과 댓글에 좋아요를 눌렀을 경우 좋아요의 수가 제대로 카운팅이 되지 않는 상황이 발생을 했다. 현재 좋아요의 공통적인 로직은 다음과 같습니다. 좋아요 엔티티에서 좋아요 여부를 확인 -> 데이터가 없으면 좋아요 추가와 좋아요 수 증가-> 데이터가 있으면 좋아요 취소 좋아요 수감소 하지만 이 로직에서의 문제점은 다음과 같습니다. 1. 경쟁조건 여러 사용자가 동시에 같은 게시글이나 댓글에 좋아요를 누르거나 취소할 때, 다음과 같은 문제가 발생할 수 있습니다.중복된 좋아요/싫어요: 이미 좋아요를 누른 사용자가 다시 누르거나, 싫어요를 누른 사용자가 다시 싫어요..
목차1.Redis의 자료구조2.String3.List4.Hashes5.Sets6.Sorted sets 1.Redis의 자료구조Redis는 기본적으로 다야한 형태의 자료구조를 제공을 하고 있다. Redis의 자료구조는 다음과 같습니다.Strings : Vinary-safe한 기본적인 key-value 구조Lists : String element의 모음, 순서는 삽입된 순서를 유지하며 기본적인 자료구로 Linked List를 사용Sets : 유일한 값들의 모임인 자료구조, 순서는 유지되지 않음Sorted sets : Sets 자료구조에 score라는 값을 추가로 두어 해당 값을 기준으로 순서를 유지Hahses : 내부에 key-value 구조를 하나더 가지는 Reids 자료구조Bit arrays(bitMap..
목차1.Redis keys -> Scan2.코드 적용 1.Redis keys -> ScanSpring Data Redis에서 KEYS 명령어는 Redis에 있는 전체 키 목록을 가져옵니다. 하지만 KEYS는 몇가지의 문제점을 가지고 있습니다. 우선 KEYS의 문제점은 다음과 같습니다. 속도 저하 문제KEYS는 Redis에 있는 모든 key를 찾는 방식입니다. 키의 갯수가 많아지면 속도 저하에 문제가 생길 수 있습니다.블로킹KEYS의 경우에는 실행을 하는 동안에는 다른 요청을 할 수가 없기 때문에 성능에도 문제가 생길 수 있습니다.그럼 이러한 문제점을 해결을 하기 위해서 찾아본 것이 Redis에 SCAN이라는 명령어가 있어서 사용을 하게 되었습니다. Scan의 설명과 특징은 다음과 같습니다.설명:Scan명..

목차1.문제상황2.적용 1.문제상황서버가 한대인 경우에는 해당 서버에 세션 정보를 저장해서 사용을 할 수 있지만, 현재 진행중인 프로젝트의 경우에는 Scale-out을 적용한 환경에서는 세션 불일치 문제가 발생을 할 수 있습니다. 세션 불일치?웹 애플리케이션에서 사용자 세션의 상태가 일관되지 않거나 예상치 못하게 변경될 때 발생하는 문제를 세센 불일치라고 합니다. 세션 불일치를 해결하는 방식에는 크게 3가지가 있습니다. Stikcy-SessionSession-ClusteringSession-Storage 이중에서 제가 적용을 할 것은 Redis를 Session-Storage로 사용할 것입니다. 우선 Redis를 사용한 이유는 다음과 같습니다. 확장성: 모든 서버가 중앙 세션 스토리지(예: Redi..