| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- coding test
- 데이터베이스
- spring boot
- DB
- mysql
- two pointers
- sql
- SpringFramework
- 밤비노
- Doit알고리즘코딩테스트
- 웹개발자
- BCIT
- Bambino
- 자바
- MSA
- MVC패턴
- servlet
- job
- jsp
- MVC
- Programming
- vite
- Java
- 웹개발
- REDIS
- CSS
- Spring MVC
- html
- react
- 웹개발기초
- Today
- Total
목록Database (18)
초보 개발자의 기록
웹 서비스에서 로그인 상태 유지, 사용자 정보 저장 등 사용자 상태(Session) 관리는 필수적입니다.이번 글에서는 Spring Boot의 HttpSession 구조, 서버 확장 시 발생하는 문제, 그리고 이를 해결하는 Redis 기반 Session Clustering을 실습과 함께 정리합니다.Http SessionHttp Session은 웹 서버가 사용자를 식별하고 데이터를 저장하는 방식입니다.사용자가 처음 서버에 접근하면 서버는 Session ID를 발급하고 이를 브라우저의 Cookie(JSESSIONID) 에 저장합니다.이후 모든 요청은 이 Session ID와 함께 전달 → 서버는 이 값을 확인해 같은 사용자인지 판단합니다.Spring Boot에서는 HttpSession 객체를 활용해 쉽게 값 ..
블로그나 서비스에서 조회수, 인기 콘텐츠 랭킹, 그리고 주문 정보를 관리할 때, RDBMS만 사용하는 것보다 Redis를 함께 사용하면 훨씬 빠르고 효율적이다. Redis를 활용하여 다음 기능을 구현블로그 게시글 조회수 카운팅로그인 사용자 기준 조회수 + 인기 글 랭킹주문 정보(Hash) 저장 및 CRUD1. 게시글 조회수 카운팅 - Redis String & INCR블로그 글 URL패턴은 아래와 같다고 가정/articles/{id}로그인 여부와 상관없이, 페이지가 새로고침 될 때마다 조회수가 올라가야 함 적합한 Redis 타입: String정수 값이 저장된 상태라면 INCR, DECR 명령으로 쉽게 증가/ 감소할 수 있고, 키가 없으면 0에서 자동으로 시작INCR articles:1INCR articl..
Redis를 스프링에서 사용할 때 RedisRepository랑 RedisTemplate 이라는 이름을 많이 보게 됨둘 다 Redis를 쓰는 도구인데, 쓰는 목적과 방식이 다름 Redis는 왜 쓰는가?Redis는 속도가 매우 빠른 인메모리 데이터베이스 보통 아래와 같은 상황에서 많이 쓰임로그인 세션 저장로그인 토큰 (JWT) 저장 / 로그아웃 처리API 캐싱랭킹(순위표) 기능알림 큐실시간 카운팅(조회수, 좋아요 수 등) RedisRepositoryJPA처럼 Redis도 엔티티 저장소처럼 쓰게 해주는 기능즉, Redis를 진짜 DB처럼 CRUD하고 싶을때 쓰는 방식 언제 사용?코드 간단하게 쓰고 싶을 때작은 프로젝트, 간단한 캐싱 구조User, Coupon 처럼 객체 단위로 저장할 때한계→ 캐싱/세션 같은..
Redis는 단순한 캐시 서버가 아니라, 문자열(String), 리스트(List), 집합(Set), 해시(Hash), 정렬된 집합(Sorted Set) 등다양한 자료구조를 메모리 기반으로 빠르게 다룰 수 있는 데이터 저장소아래에서는 각 자료구조의 특징과 함께 실제로 어떤 상황에 쓰이는지를 확 1. String (문자열)Redis의 기본 자료형으로, 숫자 문자열, 바이너리 데이터(이미지, 파일 등) 모두 저장 가능함하나의 Key에 하나의 Value만 저장됨SET user:email alex@example.comGET user:emailSET user:count 1GET user:countINCR user:count # 숫자형 문자열 자동 증가 여러 값을 한번에MSET user:name alex user:..
Redis 를 Docker로 실행했는데, localhost:8001로 들어가도 아무것도 안나오는 오류 발생.원인은 하나의 설정 차이 문제 상황services: redis-stack: image: redis/redis-stack container_name: redis-stack-compose restart: always command: ["redis-server", "--requirepass", "systempass"] ports: - 6379:6379 - 8001:8001이 경우 컨테이너는 정상적으로 올라갔지만, 브라우저에서 http://localhost:8001로 접속하니 아무것도 안나옴-> 원래는 Redis insight 웹 UI가 떠야함 원인 분석re..
관계형 데이터베이스 특징MySQL, Maria, Oracle 등은 테이블 형식으로 데이터를 저장하는 관계형 데이터베이스영속성과 일관성을 중시하며 주로 파일 시스템 (HDD/ SSD)에 데이터 저장.파일 시스템에 저장하기 때문에 상대적으로는 데이터 변경이 느림예외적으로 H2와 같은 데이터베이스는 in-memory 옵션을 제공하여 메모리에 데이터 저장 가능 Redis 소개- Redis는 메모리에 데이터를 저장하는 In-Memory 데이터베이스- 프로그램이 종료되면 메모리의 데이터가 사라지는 휘발성 특징- 빈번하게 젼경되고 삭제되는 데이터를 관리하는 데 적합- 주요 사용 사례: 사용자 세션 정보, 장바구니 정보, 조회수 카운트 등 바로바로 기록이 남아서 절대 달라지면..
DBMS :DataBase Management System 사용자와 데이터베이스 사이에서, 사용자의 요청을 해석하여 데이터베이스에 저장된 정보를 관리할 수 있도록 해주는 소프트웨어 RDBMS의 특징 - 서버의 성능을 향상 시켜야하는 Scale-up만 지원. 비용 기하급수적으로 늘어날 수 있음 - SQL 라는 구조화된 질의어를 통해 데이터를 다룸 - 스키마로 인해 데이터가 유연하지 않음. - 데이터의 분류, 정렬, 탐색 속도가 비교적 빠름 - Data를 Column과 Row 형태로 저장 - 트랜잭션 보장 : 작업의 완전성 보장 - 데이터 처리 부하 발생시, 처리 어려움 NoSQL의 특징 - 데이터 분산이 용이하며 성능 향상을 위한 Scale-up , Scale-out 가능 - key값 입.출력만 지원 - ..
트랜잭션(transaction) 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다. 특성) 1. 원자성(Atomicity) 분해가 불가능한 작업의 최소단위 연산 전체가 성공 또는 실패( All or nothing) 하나라도 실패할 경우 전체가 취소되어야하는 특성 2. 일관성(Consistency) 트랜잭션 성공 후 항상 일관된 데이터베이스 상태를 보존해야하는 특성 3. 격리성 / 고립성(Isolation) 트랜잭션 실행 중 생헝하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가능 4. 영속성(Durability) 성공이 완료된 트랜잭션의 결과는 영속적으로 데이베이스에 저장 상태) 활동 상태(Active) : 초기상태, 트랜잭션 실행 중 부분완료 상태(Patiall..