[캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 2
·
Spring/동시성 & Lock
2024.11.19 - [Spring/동시성 & Lock] - [캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 [캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 12024.09.27 - [Spring/동시성 & Lock] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 3 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 32024.09.25 - [Spring] - [Spring] synchronizedhdbstn3055.tistory.com 이전 포스팅에서 우리는 `Distributed Lock`이나 `DB Lock`을 사용하지 않고 `Redis`를 도입하여 `Set`, `String` 같은 자료구조의 ..
[캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 1
·
Spring/동시성 & Lock
2024.09.27 - [Spring/동시성 & Lock] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 3 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 32024.09.25 - [Spring] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 2 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 22024.09.22 - [Spring] - [Spring] synchronized 키워드를 활hdbstn3055.tistory.com 우리는 위 포스팅에서 `PESSIMISTIC_WRITE`의 `Database Lock`를 활용해 동시성 문제를 해결했다..
[Spring Data] Redis Lock을 적용해보자 - 2
·
Spring/동시성 & Lock
2024.10.16 - [Spring] - [Spring Data] Redis Lock을 적용해보자 [Spring Data] Redis Lock을 적용해보자`백엔드/서버` 개발자라면 반드시 `동시성` 문제를 만나게 된다. 특히, 요즘 `K8s` 환경을 자주 사용하는데 아무리 애플리케이션에서 `동시성` 발생 대비를 해도다른 `Pod`에서 같은 `DB`에 접근하면hdbstn3055.tistory.com  우리는 이전 포스팅에서 `Redis`를 활용한 `Distributed Lock`을 적용하고 관련된 문제를 해결했다. 해결 방안1: 앞에 프록시 클래스를 두는 것해결 방안2: `@TransactionalEventListener`를 사용하는 것하지만, `해결 방안1`과 `해결 방안2`는 `Distributed ..
[Spring Data] Redis Lock을 적용해보자 - 1
·
Spring/동시성 & Lock
`백엔드/서버` 개발자라면 반드시 `동시성` 문제를 만나게 된다. 특히, 요즘 `K8s` 환경을 자주 사용하는데 아무리 애플리케이션에서 `동시성` 발생 대비를 해도다른 `Pod`에서 같은 `DB`에 접근하면 동시성 문제를 처리하는 것이 어렵다.  위의 그림과 같은 경우 `DB` 또는 `Redis`에서 제공하는 `Lock`을 활용하여 데이터의 동시성 접근을 제어해야 한다. `DataBase Lock`을 이용할 경우 추가적인 인프라 구성요소 없이 `동시성`을 해결할 수 있다는 장점이 있으나`Lock` 획득을 위해 `Waiting`되는 `DataBase Connection` 증가로 인해 부하가 발생할 수 있다. `Redis`를 이용하여 `Distributed Lock`을 사용할 경우 `DataBase Conn..
[Redis] Redis 야무지게 사용하기
·
DB/Redis
Redis 캐시로 사용하기 What is Caching?Temporary Location For Speed데이터의 원래 소스보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소 `캐시`란 사용자의 입장에서 데이터의 원래 소스보다 빠르게 효율적으로 액세스 할 수 있는 임시 저장소를 말한다.대부분의 애플리케이션에서 속도 향상을 위해 `캐시`를 사용한다. 일단 이 `캐시`를 효율적으로 접근하기 위한 조건은 다음과 같다.원본 보다 빠른 접근 속도같은 데이터 반복적 액세스(즉, 데이터 액세스 횟수가 1번 이상이여야 의미가 있음)변하지 않는 데이터 Redis as a cache Most popular software caching solution단순한 key-value 구조In-memory 데이터 저장소..
[Redis] 레디스는 무엇일까?
·
DB/Redis
Redis 소개레디스(Redis)는 메모리 기반의 데이터 저장소이다. 키-밸류(key-value) 데이터 구조에 기반한 다양한 형태의 자료 구조를 제공하며,데이터들을 저장할 수 있는 저장소이다. 최신 버전의 레디스는 PUB/SUB 형태의 기능을 제공하여 메세지를 전달할 수 있다. 즉, 데이터 저장 뿐만 아니라 다양한 목적으로 사용할 수 있다. 레디스는 메모리에 데이터를 저장하기 때문에 저장 공간에 제약이 있어, 주로 보조 데이터 저장소로 사용한다. 이를 극복하기 위한 레디스 클러스터 기능도 제공하고 있어 저장 공간을 확장할 수 있다. 또한, 저장된 데이터를 영구적으로 디스크에 저장할 수 있는 백업 기능을 제공하므로 애플리케이션의 주 저장소로도 사용할 수 있다. 또한, 메모리에 데이터를 저장하기 때문에 빠..