
1. Lettuce를 사용하는 경우에 MGET 동작 방식과 해시태그(HashTag)[ Redis MGET 명령어와 CrossSlot 에러 ]MGET 이란 Multi-Get의 줄임말로, 여러 개의 key에 대하여 GET 요청을 보내는 방식을 의미한다. 그러면 레디스는 각각의 GET 요청에 대한 응답을 목록으로 반환하여 제공해준다.MGET key1 key2 key3 key41) "value1"2) "value2"3) "value3"4) "value4" MGET 요청을 보낼 때는 주의할 점이 하나 있는데, 레디스 클러스터 환경에서는 MGET 요청으로 전달되는 key들이 항상 동일한 슬롯을 향해야 한다는 것이다. 레디스 클러스터 환경에는 키를 특정 노드에 배분하는 단위인 슬롯(Slot)이라는 개념이 존재한다...

1. 데이터베이스 대소문자 구분을 위한 콜레이션(Collcation)utf8mb4_unicode_ci와 utf8mb4_general_ci 그리고 utf8mb4_bin[ 데이터베이스 Character Set과 Collcation에 대하여 ]MySQL 서버는 유니코드 문자 집합을 포함하여 다양한 문자 집합(Character Set)을 지원한다. 대표적으로 다음과 같은 유니코드 문자 집합이 존재한다.utf8mb4: 문자당 1~4바이트를 사용하는 유니코드 문자 집합의 UTF-8 인코딩utf8mb3: 문자당 1~3바이트를 사용하는 유니코드 문자 집합의 UTF-8 인코딩으로, deprecated 되어 utf8mb4 사용이 권장됨utf8: utf8mb3의 alias로 마찬가지로 utf8mb4의 사용을 권장하며, 추후..
1. Redis 메모리 사용량 추정하기(Redis Memory Usage Estimation) [ 사전 지식 습득하기 ]레퍼럴에 대하여이번에 레디스 메모리 사용량을 분석할 서비스는 다음과 같은 초대 이벤트 서비스이다. 친구들에게 나의 초대키를 공유하여 친구가 접속하면 나에게 혜택을 받는 구조인데, 이를 레퍼럴(Referral)이라고 한다. 일종의 추천인 제도라고 볼 수 있는데, 흔히 사용되는 마케팅 기법 중 하나이다. 이러한 마케팅 기법에는 때 크게 공유자와 피공유자라는 두 종류의 액터가 등장하는데, 이러한 내용을 바탕으로 레디스에 저장되는 메모리 사용량을 추산해보도록 하자. 참고로 이번 이벤트의 참여자는 500만명으로 가정한다. 레디스 오버헤드를 포함한 사용량 공식 도출다른 모든 시스템과 마찬가지로..

1. 톰캣에서 server.compression.min-response-size가 제대로 동작하지 않는 이유 분석하기 아래의 내용은 HTTP 요청 중에서 content-type: application/json인 경우를 전제로 한다. text/plain 등의 경우에는 정상적으로 작동하고 있다. [ 스프링 부트의 server.compression 설정들 ]스프링 부트에서는 다음의 압축 설정을 통해 압축을 활성화하고, 압축을 적용할 조건을 명시할 수 있다. 해당 설정을 추가하고 클라이언트가 HTTP 요청에 Accept-Encoding: gzip 헤더를 넣고 보내면, 응답의 Content-Length 헤더가 설정된 값보다 클 경우 압축이 진행됨을 기대할 수 있다.server.compression.enabled..

1. 스템의 성능과 volatile 키워드를 통한 메모리 가시성에 대한 이해(Memory Visiblilty)[ 시스템의 성능에 대한 이해, 성능은 어디에서 오는가? ]무어의 법칙(Moore's law)과 컴퓨터 구조(Computer Architecture)무어의 법칙(Moore's law)은 인텔의 창업자 중 한명인 고든 무어(Gorden Moore)가 명명한 것으로, 경제적으로 생산 가능한 칩 위의 트랜지스터 수는 대략 2년마다 거의 2배로 증가함을 뜻한다.무어의 법칙이 성능이 아닌 트랜지스터 수를 기준으로 한다는 것은, 소프트웨어 엔지니어가 하드웨어 엔지니어로부터 얻어낼 수 있는 성능이 2배가 아님을 의미한다.성능에는 여러 가지 복합작인 요소가 작용하는데, 그럼에도 불구하고 성능에 가장 결정적인 요..