2025/04/17 4

낙관적 락과 비관적 락

낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)은 **동시성 제어(concurrency control)**를 위한 두 가지 대표적인 전략입니다. 주로 데이터베이스나 ORM(JPA 등)에서 다중 트랜잭션이 동시에 동일한 데이터를 조작할 때 발생할 수 있는 **경쟁 상태(race condition)**나 데이터 무결성 문제를 방지하기 위해 사용됩니다.🟢 낙관적 락 (Optimistic Lock)✅ 개념충돌이 거의 없을 것이라는 전제 하에 동작.트랜잭션 동안 락을 걸지 않고, 최종 커밋 시점에 버전 정보나 타임스탬프를 비교하여 충돌을 감지함.충돌이 나면 커밋을 실패시키고, 예외를 발생시켜 롤백하거나 재시도.✅ 구현 방식 (JPA 기준)@Version 애너테이션을 사용하여..

데이터베이스 2025.04.17

Redis 자료구조 설명

1. String가장 기본적인 자료구조입니다.하나의 key에 하나의 문자열 값을 저장합니다.숫자, JSON, base64 등 다양한 형식의 데이터를 담을 수 있습니다.🟢 사용 예:사용자 이름, 토큰, 설정 값 저장카운터, TTL을 가진 데이터 등2. List양방향 연결 리스트 구조입니다.순서가 유지되며, 양 끝에서 push/pop 할 수 있습니다.🟢 특징:FIFO (큐) 또는 LIFO (스택) 구조로 사용할 수 있음🟢 사용 예:작업 큐채팅 메시지 목록로그 수집 (X개의 최근 메시지만 유지)3. Set중복을 허용하지 않는 무작위 순서의 집합입니다.삽입 순서를 기억하지 않습니다.🟢 특징:값의 존재 여부 확인이 빠름 (SISMEMBER)집합 연산 가능 (합집합, 교집합, 차집합)🟢 사용 예:태그 목록..

프로그래밍 2025.04.17

Redis 명령어 정리

1. String기본 명령어SET name "Jinwook"GET nameINCR count실행 결과OK"Jinwook"(integer) 1설명SET은 문자열 값을 저장합니다.GET은 저장된 값을 조회합니다.INCR은 정수 값을 1 증가시키며, 존재하지 않으면 0으로 간주합니다.2. List (연결 리스트)기본 명령어LPUSH fruits "apple"RPUSH fruits "banana"LPUSH fruits "orange"LRANGE fruits 0 -1LPOP fruits실행 결과(integer) 1(integer) 2(integer) 31) "orange"2) "apple"3) "banana""orange"설명LPUSH/RPUSH는 왼쪽/오른쪽에 요소를 추가합니다.LRANGE key 0 -1은 리..

프로그래밍 2025.04.17