개요오늘은 저번 시간에 말했던 redis cluster를 적용해보는 시간을 가졌다. 사실 대략적으로 사용 방법만 살펴보고 빠르게 적용이 완료될 줄 알았는데... 생각보다 오래 걸렸다... Redis Cluster먼저 redis cluster가 무엇인지 다시 한 번 살펴보자. Redis Cluster는 Redis의 분산처리 및 고가용성을 지원하는 구성 방식으로, 데이터를 여러 Redis 노드에 분산 저장하고 관리할 수 있도록 설계되었다. 이는 단일 Redis 인스턴스의 한계를 극복하고 확장성과 장애 복구 능력을 강화하기 위해 사용된다. 주요 특징데이터 분산 (Sharding): 데이터를 키 범위(Hash Slot)로 나누고, 이를 클러스터의 여러 노드에 분배. Redis는 키에 대해 해시(Hash) 값을 ..
문법SUBQUERY연산이 한 번에 끝나면 참 좋은데 아닐 때가 많다. 문자를 변경한 다음,.. 숫자 연산을 하고 그 결과로 또 연산을 해야할 때... 너무 긴 쿼리문보다는 조금 더 효율적이고 알아보기 쉽게 Subquery를 사용해보자! 언제 사용할까?→ 여러번의 연산을 수행해야 할 때. → 조건문에 연산 결과를 사용해야 할 때. → 조건에 Query 결과를 사용하고 싶을 때. 기본 구조Sub 라는 명칭에서 알 수 있듯이, Query안에 sub로 들어간 구문이라고 생각하면 쉽다.select column1, special_columnfrom ( /* subquery */ select column1, column2 special_column from table1 ) Subquery_name 예시. 음식점의 총..
문법숫자 연산SELECT food_preparation_time, delivery_time, food_preparation_time + delivery_time as total_timeFROM food_orders일반적인 사칙연산과 같이 sql에서도 + - * / 을 이용하여 숫자 연산이 가능하다. 단, 사용하려는 쿼리가 숫자 형식인지 반드시 확인하고 사용해야 한다. SUMSELECT SUM(food_preparation_time) total_food_preparation_timeFROM food_orders해당 쿼리 내 데이터를 전부 더한다. AVGSELECT AVG(age) as average_of_age FROM customers c 해당 쿼리 내 데이터의 평균값. COUNTS..
Redis (Remote Dictionary Server)데이터 구조 서버로 잘 알려진 오픈 소스 인메모리(in-memory) 데이터 저장소. 매우 빠르고 유연한 성능 덕분에 주로 캐시, 메시지 브로커, 세션 저장소, 그리고 실시간 데이터 처리를 위해 사용된다. 특징더보기 인메모리 데이터 저장소데이터를 메모리에 저장하므로 읽기와 쓰기 속도가 매우 빠르다.디스크 기반 데이터베이스보다 짧은 응답 시간이 필요할 때 적합하다.데이터 구조단순한 키-값 저장소 이상으로 다양한 데이터 구조를 지원한다:지속성 옵션기본적으로 데이터를 메모리에 저장하지만, 디스크에 데이터를 저장하여 지속성을 유지할 수도 있다.RDB (Redis Database): 주기적으로 스냅샷 저장. AOF (Append-Only File): 모든 ..
레이스 컨디션 (Race Condition)두 개 이상의 프로세스(Process) 또는 스레드(Thread)가 동시에 공유 자원에 접근하려고 할 때 발생하는 문제로, 접근 순서를 예측할 수 없는 상황에서 발생하기 때문에, 결과 역시 예측할 수 없어 불안정한 프로그램 동작을 초래할 수 있다. 주로 다중 스레딩 환경에서 빈번히 발생하는데, 예를 들어 계좌 잔액을 동시에 업데이트하는 두 스레드가 있는 경우, 레이스 컨디션이 발생하면 잔액이 정확히 반영되지 않는 문제가 생길 수 있다. 이를 방지하기 위해 동기화 기법을 사용하며, 대표적으로 세마포어와 뮤텍스가 있다. 세마포어 (Semaphore)여러 스레드가 공유 자원에 접근하는 것을 제어하는 동기화 도구로, 주로 특정 리소스를 사용할 수 있는 티켓의 개수를 제..
컨텍스트 스위칭 (Context Switching)운영체제(OS)에서 하나의 프로세스나 스레드가 실행을 멈추고 다른 프로세스나 스레드를 실행하도록 전환하는 작업. 이 과정에서 시스템은 현재 실행 중인 작업의 상태를 저장하고, 새롭게 전환할 작업의 상태를 복원하여 실행을 계속하게 된다. 컨텍스트 스위칭은 멀티태스킹을 지원하기 위해 필수적이다. 컨텍스트 스위칭 개념 프로세스/스레드: 여러 작업이 동시에 실행될 수 있도록 CPU가 각 작업을 교대로 실행한다.컨텍스트(Context): 프로세스나 스레드의 실행 상태를 의미하며, CPU 레지스터 값, 프로그램 카운터, 스택 포인터, 메모리 맵 등을 포함한다.컨텍스트 스위칭: 특정 작업의 컨텍스트를 저장하고, 새로운 작업의 컨텍스트를 복원하는 과정을 통해 CPU 제..