서적 9

Chapter 01.레디스의 시작 [Part3 자료형과 기능]

I. 파이프라인필요성Redis는 기본적으로 요청-응답 구조이기 때문에 여러 명령을 순차적으로 실행하면 RTT(Round Trip Time) 오버헤드가 발생함파이프라인은 이러한 불필요한 왕복 비용을 줄여 다수의 명령을 빠르게 처리할 수 있도록 도와줌문제점명령 간 의존성이 있을 경우 처리 순서에 따른 예외가 발생할 수 있고, 응답이 몰려오기 때문에 디버깅이나 실패 추적이 어려움또한 원자성은 보장되지 않음1. 파이프라인(Pipelining)이란?여러 Redis 명령을 클라이언트에서 한꺼번에 전송하고, 서버는 응답을 순차적으로 반환각 명령을 RTT(Round Trip Time)마다 보내지 않고, 한 번에 요청하고 한 번에 응답 받음성능 최적화 측면에서 매우 유용 (컨텍스트 스위칭, 시스템 콜 감소)(1) 특징명..

서적/실전 Redis 2025.06.09

Chapter 01.레디스의 시작 [Part2 자료형과 기능]

I. 자료형의 기능과 개요1. 다섯 가지 자료형(1) Redis가 기본적으로 제공하는 주요 자료형 다섯 가지:String형: 문자열 및 숫자값 저장에 적합한 단순한 키-값 구조.List형: 삽입 순서를 유지하는 문자열 리스트.Hash형: 필드-값 쌍으로 객체를 표현하는 데 유용.Set형: 순서 없이 중복 없는 고유 문자열의 집합.Sorted Set형: 점수(score)에 따라 자동 정렬되는 집합.이들 자료형은 각각 명확한 유스케이스에 따라 선택되며, 상황에 맞게 적절히 사용하는 것이 성능과 코드 간결성에 중요함.2. 보조 자료형과 기능(1) 특정 용도에 특화된 보조 자료형:비트맵(BitMap)지리적 공간 인덱스(Geospatial Index)(2) 기능적 목적의 주요 기능:Pub/Sub (발행-구독 기능..

서적/실전 Redis 2025.05.26

Chapter 01.레디스의 시작 [Part1 기초] : 연습문제 포함

0. 레디스란레디스(Remote Dictionary Server : Redis)는 인메모리 데이터 구조 저장소로써 빠르게 동작하고, 자료형과 기능이 다양한 비관계형 DB이다. 1. 레디스를 사용하기까지레디스는 인메모리 DB로서 뛰어난 성능과 간단하고 유연한 DB기능과 간단한 설정이라는 장점이있다. NoSQL은 특정 데이터 모델 전용 설계, 빠른 속도로 장점이 있고 RDBMS의 특성상 구현하기 어려운 부분도 있다. 그러다보니 우열관계가 아닌 NoSQL과 RDBMS는 Trade-Off 라고 할 수있다. Redis는 주로 NoSQL범주로 분류되며 최근에는 용도에 따라 RDBMS와 레디스를 함께 사용하는 방식이 늘고있다. RDBMS의 속도, 일부 데이터 모델 표현에 구현의 복잡성이 있다. 이러한 단점 해결하기 ..

서적/실전 Redis 2025.05.17

[FiveLinesOfCode] 6장: 유사한 코드 융합하기

6장 데이터 보호 의문점 학습목표 ‘getter와 setter를 사용하지 말것’ 으로 캡슐화 강제하기란? ‘getter와 setter 제거하기’ 로 getter제거하기란? ‘공통 접사를 사용하지말것’을 위한 ‘데이터 캡슐화’ 사용이란? ‘순서 강제화’로 불변속성제거란? 키워드 6.1 getter없이 캡슐화 하기 정의 Boolean 이 아닌 필드에 getter나 setter 사용하지 말것 즉 직접할당하거나 반환하는 메서드를 의미함 getter 존재시 캡슐화를 해제하고 불변속성을 전역적으로 만듬 객체 반환 후 반환받은 곳은 객체를 다른곳어 더 전달이 가능하고 이것은 제어 불가능 setter 존재시 setter수정시 시그니처 유지할 수있는 또 다른 간접적 레이어 도입할 수있음 실제로는 setter를 통한 새로..

[FiveLinesOfCode] 5장 유사한 코드 융합하기

5장 유사한 코드 융합하기 의문점 성능 최적화는 프로파일링 도구 사용해서 가이드 해야함 (p.112) 인터페이스는 사용구의 일반적인 원입니다. 학습목표 유사 클래스 통합하기란? 조건부 산술로 구조 노출하기란? 간단한 UML 클래스 다이어그램 이해하기란? ‘전략 패턴 도입’으로 유사코드 도입하기란? ‘구현체가 하나뿐인 인터페이스 만들지 말것’으로 어지러움 정리하기 키워드 1. 유사한 클래스 통합하기 5.1 개요 updateTile() 은 우선 else 사용금지 규칙 위반함 → 첫번째 단계로 || 에 대해서 하나의 함수로 도입해야함 // Stone FallingStone의 유일한 차이점 2개 class Stone implements Tile { isAir() { return false; } isStone()..

[FiveLinesOfCode] 4장 타입코드 처리하기

4장 : 타입코드 처리하기 의문점 enum 을 클래스로 굳이 다 나눠야함? → 복잡도에 따라서 선택! 대출부분 학습목표 if 문에서 else를 사용하지말것과 switch문을 사용하지 말것으로 ‘이른 바인딩’ 제거란? ‘클래스로 타입 코드 대체’, 그리고 ‘클래스로의 코드 이관’으로 if 문 제거하기란? ‘메서드 전문화’로 문제가 있는 일반성 제거하기란? ‘인터페이스에서만 상속’받을 것으로 코드 간 커플링(결합) 방지하기 ‘메서드의 인라인화’ 및 ‘삭제 후 컴파일하기’를 통한 불필요한 메서드 제거 키워드 1. 간단한 if문 리팩터링 4.1 규칙 : if문에서 else를 사용하지 말것 정의 프로그램에서 인식 하지 못하는 타입인지를 검사하지 않는 한, if문에서 else사용하지 말것 if-else 를 사용하면..

[FiveLinesOfCode] 3장 : 긴 코드 조각내기

3장 : 긴 코드 조각내기 의문점 불변속성(invariant), 가정설정문(assertion) 디자인패턴 → 상속보다는 컴포지션, 컴포지션이 컴파일 오류 발생 만듬? 학습목표 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 세부사항을 보지 않고 코드 작업하기란? 메서드 추출(EXTRACT METHOD)로 긴 메소드 분해하기란? 호출 또는 전달, 한가지만할것(EITHER CALL OR PASS)으로 추상화 수준에 맞추기란? if 문은 함수의 시작에만 배치로 if문 분리하기란? 키워드 DRY, KISS 지침을 따른경우라도 코드는 여전히 혼란스러움 1. 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 정의 {} 제외 if, for, while, 세미콜론끝나는 모든것은..

[FiveLinesOfCode] 2장 : 리팩터링 깊게 들여다보기

2장 : 리팩터링 깊게 들여다보기 의문점 - 불변속성(invariant), 가정설정문(assertion) - 불변속성? - 객체가 정상적으로 작동하기 위해 값, 식, 상태의 일관성 보장하기위해 항상 참이 되기 위한 조건 - 기름양은 0 ≤ oil ≤ 100 사이여야만 함 - 이 범위를 벗어나면 안되는 조건을 불변속성이라 함 - - 디자인패턴 → 상속보다는 컴포지션 학습목표 가독성을 통한 의도 전달이란? 유지보수성 개선을 위한 불변속성(invariant) 지역화란? 개발속도 향상을 위한, 추가(addition)를 통해 변경가능하게 만들기란? 리팩터링의 일상 업무화란? 키워드 1. 가독성을 통한 의도 전달이란? 2. 유지보수성 개선을 위한 불변속성(invariant) 지역화란? - 가독성 및 유지보수성 향상..

[FiveLinesOfCode] 1장 : 리팩터링, 리팩터링 하기

1장 : 리팩터링 리팩터링 하기 의문점 XP에서 스파이크 시작전 핵심기능 간단구현 레드 - 그린 - 리팩터 반복 TDD 를 처리를 기술한 방법 자동화된 테스트 학습목표 리팩토링의 구성요소는? 일상 업무에 리팩토링 도입이란? 리팩토링에 있어 안전의 중요성이란? 키워드 리팩토링의 구성요소는 스킬,문화,도구 로 구성되어있다 제반 정의 좋은 코드? : 사람이 읽기 쉽고, 유지보수가 용이하며, 의도한대로 잘 작동하는 코드 리팩토링? : 기능을 변경하지않고, 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는것 리팩토링의 이유 가독성 높이면 → 기능구현 시간 확보 (경제성) 유지보수가 용이 → 버그가 줄어들고 수정이 쉬워짐 생각하기 편하다 → 한번에 많은 것을 기억해야할수록 지침, 스킬 : 무엇을 리팩토링 할 것인가..