일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
- Today
- Total
목록분류 전체보기 (323)
기록
Key-Value 구조 (String): 가장 기본적인 저장 방식가장 자주 쓰이는 형태다. 사용자 인증 번호, 로그인 실패 횟수, 캐시된 설정값 등 단일 값을 빠르게 읽고 쓸 수 있을 때 유용하다.// RedisTemplate 버전redisTemplate.opsForValue().set("user:token:123", "abc123", Duration.ofMinutes(10));String token = redisTemplate.opsForValue().get("user:token:123");// ReactiveRedisTemplate 버전reactiveRedisTemplate.opsForValue() .set("user:token:123", "abc123", Duration.ofMinutes(10..
1. Key-Value (String) 구조Redis의 기본 데이터 구조이며, 모든 키는 이 구조 위에 올라간다. TTL 설정, 조건부 저장, 값 증가/감소 등은 모두 여기서 시작된다.SET key value값 저장기존 값 덮어씀SET key value EX 60값 저장 + TTL 설정60초 후 자동 삭제SET key value NX값 저장 (키가 없을 때만)조건부 저장SET key value XX값 저장 (키가 있을 때만)조건부 갱신GET key값 조회-DEL key키 삭제여러 키도 가능EXPIRE key secondsTTL 설정SET과 별도 사용 가능TTL keyTTL 남은 시간 조회단위: 초INCR key정수 값 1 증가초기값이 없으면 0부터DECR key정수 값 1 감소동일INCRBY key 10..
1. Redis의 요청 처리 구조Redis는 싱글 스레드 기반 이벤트 루프 구조를 갖는다. 이는 모든 클라이언트 요청이 하나의 메인 스레드에서 순차적으로 처리된다는 뜻이다. 다음과 같은 단계로 요청을 처리한다:Client → Connection Handling → Parser → Dispatcher → Executor → In-memory StoreConnection Handling: 클라이언트와의 TCP 연결을 수립하고, I/O 이벤트를 비동기적으로 처리한다. Redis는 내부적으로 epoll, kqueue 등의 고성능 I/O 멀티플렉싱 기법을 사용한다.Parser: 클라이언트가 전송한 Redis Protocol(RESP)을 파싱하여 명령과 인자를 분석한다.Dispatcher: 명령을 적절한 명령 핸들..

architecture 개요Redis는 메모리 기반의 고성능 키-값 저장소다. 단일 인스턴스만으로도 충분한 처리 성능을 제공하며, 초기 개발 및 단순한 캐시 용도로는 특별한 설정 없이도 빠르게 도입할 수 있다. 그러나 시스템이 커지고, 데이터가 많아지며, 장애 대응 요구가 높아질수록 Redis 인프라에 대한 고민도 깊어진다.다음과 같은 상황을 가정해보자.Redis 인스턴스에 장애가 나면 전체 서비스가 멈추지 않을까?데이터가 많아져 메모리가 부족해지면 어떻게 나눠 저장할 수 있을까?요청량이 늘어나 단일 인스턴스가 감당하지 못하면 어떻게 확장할 수 있을까?이러한 문제를 해결하기 위한 대안으로 Replication, Cluster 모드와 같은 아키텍처가 존재한다. 반면, 단순한 환경이라면 오히려 Standal..
1. Redis의 정의와 철학Redis는 Remote Dictionary Server의 약자로, 인메모리(In-memory) 기반의 Key-Value 데이터 저장소이다. 디스크가 아닌 메모리에 데이터를 저장하기 때문에 읽기/쓰기 속도가 매우 빠르며, 다양한 데이터 구조를 지원한다.Redis의 철학은 단순하지만 강력한 데이터 처리에 있다. 데이터베이스, 캐시, 메시지 브로커 역할을 동시에 수행할 수 있으며, 기본적인 키-값 저장소를 넘어서 List, Set, Sorted Set, Hash, Bitmap, HyperLogLog 등 다양한 컬렉션 타입을 제공한다.2. 기존 RDB·Memcached 대비 Redis의 차별점2.1 RDB(Relational Database)와의 비교RDB는 데이터의 무결성과 복잡..
문제 개요유사 칸토어 비트열은 수학의 칸토어 집합에서 영감을 받아 정의된 재귀적 이진 문자열이다.0번째 비트열은 "1"로 시작하고, 이후 단계에서는 다음 규칙을 따른다:"1"은 "11011"로 치환"0"은 "00000"로 치환이런 방식으로 n단계까지 문자열이 재귀적으로 확장된다. 예를 들어:n=1 → "11011"n=2 → "11011 11011 00000 11011 11011"문제는, 이러한 유사 칸토어 비트열에서 임의의 구간 [l, r] 내에 포함된 '1'의 개수를 구하는 것이다.단, n ≤ 20인 경우 전체 문자열 길이는 최대 5^20 ≈ 9.5 * 10^13으로, 문자열을 직접 생성할 수 없다.따라서 문자열을 만들지 않고도 정답을 계산하는 알고리즘이 필요하다.문제 접근전체 구조각 단계의 문자열은 ..
문제 요약https://school.programmers.co.kr/learn/courses/30/lessons/150369?language=java택배 기사가 집마다 배달할 박스와 수거할 박스를 가지고 있음한 번에 운반 가능한 박스 수는 cap개왕복 이동 시 가장 멀리 가는 위치 기준으로 거리 누적목적: 모든 배달과 수거를 완료하는 최소 이동 거리 계산접근 전략이 문제는 단순히 배열을 순회하며 처리하는 방식으로는 거리 최적화를 구현하기 어렵다. 가장 중요한 포인트는 다음과 같다:❗ 한 번의 이동으로 배달과 수거를 동시에 처리하고, 이동 거리 기준은 가장 멀리 가는 위치여야 한다.이를 위해 다음과 같은 방법으로 접근한다.1. 우선순위 큐(PriorityQueue)를 사용해 먼 위치부터 처리idx가 큰 집..
1. 문제 요약- url : https://school.programmers.co.kr/learn/courses/30/lessons/1835 카카오프렌즈 8명이 단체사진을 찍기 위해 일렬로 서고자 한다. 각 프렌즈는 특정 상대와의 거리에 대해 조건을 제시하며, 모든 조건을 만족하는 줄 세우기 방법의 총 경우의 수를 계산하는 문제이다.조건은 다음과 같은 문자열 형태로 주어진다:N~F=0 → 네오와 프로도의 간격이 0이어야 한다.R~T>2 → 라이언과 튜브의 간격이 2보다 커야 한다.조건은 최대 100개까지 주어질 수 있으며, 줄 세움은 8명의 모든 순열(8!)에 대해 탐색하면서 조건을 만족하는 경우만 카운트해야 한다.2. 풀이 전략이 문제는 총 경우의 수가 8! = 40,320으로 완전 탐색(DFS) 으로..