본문 바로가기
728x90

전체 글434

Valkey에 추가한 나만의 echo 명령어 분석하기 💡 지난 글에 추가한 echoX3 명령어에서 사용된 구조체와 함수를 간단히 분석해 보면서 C와 Valkey에 한 발 더 다가가보자. 🤖 echoX3 명령어127.0.0.1:6379> echoX3 helloworld!# 출력"helloworld! helloworld! helloworld!"지난 글에서 valkey의 기존 echo 명령어를 이용해 세 번 반복하는 echoX3 명령어를 추가해 보았다.자세한 내용은 맨 위 링크를 참고하자. 🚀 C 핵심 개념🏛️ 구조체(Struct)# 구조체 예시struct Person { int age; char *name;};# 사용 예시struct Person p;p.age = 30;p.name = "Alice";C에서 구조체는 여러 개의 변수(데이터)를 .. 2025. 5. 27.
Redis의 RESP에 대해 간단히 알아보자 🤖 RESP(Redis Serialization Protocol)란?Redis 서버는 클라이언트와 통신할 때 RESP(Redis Serialization Protocol)라는 간단한 텍스트 기반 프로토콜을 사용한다.일반적인 서버와 클라이언트가 JSON 형식으로 데이터를 주고받는 것처럼 클라이언트가 명령을 보낼 때와 Redis 서버가 응답할 때 모두 정해진 포맷으로 문자열을 주고받는 방식이다. 😗 간단한 예시# 클라이언트$ set email gildong@email.email클라이언트에서 사용자가 입력하는 명령어이다. # RESP로 변환되어 서버에는 아래와 같이 전송됨*3\r\n$3\r\nSET\r\n$5\r\nname\r\n$19\r\ngildong@email.email\r\nRedis 서버로 전송될.. 2025. 5. 21.
프로세스와 스레드에 대해 자세히 알아보기 🧬 프로세스 메모리 구조📄 코드(Code) 영역프로그램의 실행 명령어(기계어)가 저장되는 영역입니다.개발자가 작성한 코드(함수 정의, if/for) 등의 로직이 컴파일되어 들어갑니다.일반적으로 읽기 전용이며, 스레드 간에 공유됩니다. 📦 데이터(Data) 영역초기화된 전역 변수, 정적(static) 변수 등이 저장됩니다.프로그램 시작 시 함께 로드되며, 실행이 끝날 때까지 유지됩니다.프로세스 단위로 존재하며, 스레드 간에 공유됩니다. 🎯 힙(Heap) 영역프로그램 실행 중 동적으로 할당되는 메모리입니다.new, malloc 등으로 생성되는 객체나 배열이 저장됩니다.스레드 간에 공유가 가능하지만, 동기화 관리가 필요합니다. (ex: synchronized, mutex) 🌀 스택(Stack) 영역함.. 2025. 5. 14.
Valkey 오픈 소스를 직접 빌드하고 나만의 echo 명령어를 추가해보자 💡 설명 : C언어를 전혀 모르는 자바 개발자가 최대한 이해하기 쉽게 풀어쓴 실습 기록입니다.🌀 목표 : Valkey의 소스 코드에서 echo 명령어를 참고하여 나만의 echo 명령어 만들어보기- 커맨드 이름 : echoX3- 커맨드 설명 : 입력 문자열을 세 번 반복하는 echo 명령어- 커맨드 입력 예시 : "helloworld!"- 커멘드 출력 예시 : "helloworld! helloworld! helloworld!" 👨🏻‍🔬 사전 준비🧪 Valkey GitHub 저장소 Fork & Clone아래 링크로 접속:👉 https://github.com/valkey-io/valkey오른쪽 상단의 Fork 버튼 클릭👉 본인의 GitHub 계정으로 복사본 생성됨 (예: github.com/yo.. 2025. 5. 13.
Redis & Valkey에 대해 알아보자 - 원자성과 자료구조(Siphash, Skiplist) 💡 공부하며 작성한 내용으로 잘못된 내용이 있을 수 있습니다.🌀 Valkey는 Redis의 포크 버전으로 기본 개념과 동작방식은 동일하기 때문에 명칭 생략했습니다. 💧 Redis의 원자성(Automicity)Redis는 모든 명령어가 원자적으로(Atomic) 실행되도록 설계되어 있습니다.즉, 하나의 명령어는 중간에 끼어들거나 나뉘지 않고, 완전히 실행되거나 아예 실행되지 않습니다.예를 들어 INCR counter 명령어는 다른 클라이언트의 명령어가 중간에 끼어들 수 없이 한 번에 실행되기 때문에, 여러 클라이언트가 동시에 이 명령을 실행해도 값이 정확하게 증가합니다.INCR counter 명령어는 특정 키의 숫자 값을 1 증가시키는 명령어입니다.이러한 동작이 가능한 이유는 Redis가 단일 스레드 .. 2025. 5. 11.
Redis & Valkey에 대해 알아보자 - 개념, 역사, 캐싱, 사용 분야 💡 공부하며 작성한 내용으로 잘못된 내용이 있을 수 있습니다. 🟥 Redis란? Redis는 "REmote DIctionary Server"의 약자로, 메모리 기반의 고성능 키-값(key-value) 데이터 저장소입니다. NoSQL 계열의 데이터베이스 중 하나로 분류되며, 빠른 읽기/쓰기 성능을 위해 데이터를 디스크가 아닌 메모리에 저장합니다. 🟥 개발 배경 Salvatore Sanfilippo는 LLOOGG라는 실시간 로그 분석 툴을 개발 및 운영하던 중, 기존 MySQL의 확장성에 한계를 느끼고 이를 해결하기 위해 2009년에 Redis를 개발하였습니다. 이후 Redis는 빠르게 성장하며 전 세계적으로 널리 사용되었고, 2015년부터는 Redis Labs(현 Redis Inc.)가 프로젝트의.. 2025. 5. 9.
자바 프로그램은 어떻게 실행되는걸까?(+ 코틀린) 💡 자바 프로그램이 실행되는 전체 흐름과, 실행 중일 때 JVM이 어떻게 메모리를 다루는지를 간단하게 정리해보려고 합니다. 1. 개발자의 코드 작성과 실행우리가 IDE를 통해 작성한 코드 파일이 .java 확장자로 저장됩니다. 2. .java 파일에서 .class 파일로 컴파일우리가 실행할 자바 코드는 모두 JVM 위에서 동작합니다.JVM이 읽고 실행할 수 있으려면 JVM이 이해할 수 있는 바이트코드로 변환이 필요합니다.따라서 우리가 작성한 자바 파일(.java)은 실행 전에 반드시 컴파일 과정을 거칩니다.JDK에 포함된 javac라는 컴파일러가 .java 파일을 읽고, 바이트코드(Bytecode)로 변환해 .class 파일을 만들어줍니다.대부분의 IDE(IntelliJ, Eclipse 등)는 우리가 .. 2025. 5. 1.
init부터 merge까지 Git의 내부에서 일어나는 일 💡 지금껏 git init부터 브랜치 간의 merge까지 수백 번 넘게 경험하면서 단 한 번도 Git의 내부 동작이나 원리에 대해 궁금함을 가져본 적이 없었습니다. 이번 기회에 그 내부를 샅샅이 살펴보면서 Git에 대해 제대로 이해해보려고 합니다. 📌 Git의 일반적인 사용법 정도를 알고 있어야 합니다. 🥸 선수 지식Git 내부의 동작 방식을 이해하기 위해 필수적으로 알아야 할 용어 및 개념입니다.아래 내용은 가볍게 읽어보시고, 실습 부분에서 이해가 안되시면 돌아와 해당 개념을 다시 읽으시면 보다 수월하게 이해하실 수 있으리라 생각됩니다. ✍🏻 용어 정리🔸 HEADGit에서 HEAD는 현재 작업 중인 "브랜치의 마지막 커밋을 가리키는 포인터"를 말한다.가장 최신 커밋을 가리키고 있는 포인터인 .. 2025. 4. 30.
728x90