본문 바로가기

Redis

동시성 문제와 해결 방법들 - 2편 (분산락 with. Database Lock, Redis) 지난 포스팅에서 동시성 문제 해결 방법으로 Synchronized에 대해서 알아보았다. Synchronized를 활용한 동시성 해결은 분산 환경에서는 활용될 수 없다. 이번 포스팅에서는 데이터 베이스 Lock, 레디스를 활용한 분산락을 통해 동시성을 해결하는 방법에 대해서 알아보고자 한다. ✔️ Pessimistic Lock 활용 - Database Level 데이터 베이스에서 지원하는 Pessimistic Lock(비관적 락)을 활용하여 실제 데이터 베이스에 Exclusive Lock을 걸어서 데이터 정합성을 보장할 수 있다. 🔗 Exclusive Lock 배타적 잠금, 쓰기 잠금이라고 불린다. 한 트랜잭션에서 데이터를 변경하거나 쓰고자 할 때, 해당 트랜잭션이 완료될 때까지 레코드(row), 테이블(.. 더보기
Redis + Spring 설정 및 간단한 실습 Redis 환경 준비하기 환경: Unubunt 20.04 LTS Unubunt 20.04 LTS EC2 인스턴스에서 다음 명령어를 사용하여 Docker로 Redis 컨테이너를 구동한다. docker run -d -p 6379:6379 --name=redis redis 해당 명령어를 입력하면, 다음과 같이 구동 중인 Redis 컨테이너를 확인할 수 있다. 다음 명령어를 사용하여 redis-cli에 접속한다. docker exec -it redis redis-cli Spring Boot Project 환경: Spring Boot 2.7.5 build.gradle에 다음과 같은 dependency를 추가한다. implementation 'org.springframework.boot:spring-boot-sta.. 더보기
[Redis] Reids 내용 정리 Monitoring Metrics Redis는 많은 트래픽을 처리할 수 있기 때문에, Redis에 문제가 생기면 전체 성능 저하로 이어질 수 있다. 문제를 감지하고자 모니터링을 사용한다. Monitoring Metrics 수집 방법 info all 명령으로 Redis 자체에서 제공하는 Metrics를 확인할 수 있다. 대항목 항목 내용 memory used_memory_rss Redis가 현재 사용하고 있는 실제 물리 메모리 양, 실제 메모리 양이 많으면 Swap이 일어나서 성능이 많이 떨어진다. used_memory 현재 Redis가 계산하고 있는 사용 메모리 양, malloc의 값을 저장하고 있다가 보여준다. mem_fragmentation_ratio used_memory와 used_memory_rs.. 더보기
[DB] Redis란? In-Memory-Cache 데이터의 원본이나 원본 데이터를 통해 연산된 값을 메모리에 미리 저장(복사)해두는 것을 의미한다. 가장 많이 사용되는 In-Memory Key-Value Store는 다음과 같다. * Key-Value Store란 데이터를 지칭하는 Key와 이에 대한 데이터를 저장하는 Value 구조로 데이터를 저장하는 형태이다. * Key로 Value(데이터)를 찾을 수 있는 구조 Redis 많은 자료구조(Collection)을 제공한다. Replication을 제공해서 서비스를 더욱 안정적으로 사용할 수 있다. Cluster 모드를 제공한다. 메모리 단편화가 발생한다. Memcached Key-Value 형태만 제공한다. Redis에 비해 메모리 관리가 더 안정적이다. -> 자체적으로 C.. 더보기