전체 글

✔️ Cache Aside데이터를 조회할 때 주로 사용되는 전략으로, 조회 요청이 들어오면 레디스에 먼저 조회하고, 없으면 데이터베이스에서 조회 후 레디스에 저장한다.캐시에 데이터가 있을 경우 Cache Hit캐시에 데이터가 없는 경우 Cache Miss ✔️ Write Around데이터를 어떻게 쓸 지(저장, 수정, 삭제) 전략으로, 데이터 저장할 때 DB에만 반영되고 레디스에는 저장하지 않는다.그 후에 데이터를 조회할 때 레디스에 데이터가 없으면 데이터베이스로부터 조회해와 레디스에 저장한다. 위 전략들의 문제점은 캐시된 데이터와 DB 데이터가 일관되지 않을 수 있다는 점이다.하지만 비용을 고려하면 일치하도록 개선하기 어렵다. 따라서 레디스에 TTL(만료 시간 설정)을 적극 활용한다.
# 데이터 저장 set [key 이름] [value]$ set earth:name "wow earth" #띄어쓰기는 쌍따옴표해야함$ set earth:age 100# 데이터 조회 get [key 이름]$ get earth:name$ get earth:age$ get earth:house #없는 데이터경우 nil 출력됨# 저장된 모든 key 조회$ keys *# 데이터 삭제 del [key 이름]$ del earth:age# 데이터 만료시간 지정 set [key 이름] [value] ex [만료 시간(초)]$ set earth:pet dog ex 30# 만료시간 확인 ttl [key 이름]# 키가 없는 경우 -2를 반환# 키는 존재하지만 만료 시간이 설정돼 있지 않은 경우에는 -1을 반환$ ttl eart..
확장자 msi 다운로드 후 설치진행https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com 파일 설치 경로C:\Program Files\Redis 실행 명령어 정상 설치 확인
오픈소스로 key-value 구조의 NoSQL쉽게 말하면 key-value 기반이라 쿼리를 날릴 필요 없이 바로 조회할 수 있는 데이터 저장소이다.디스크에서 데이터를 쓰는 구조가 아니고 메모리(RAM)에서 데이터릴 처리하기 때문에 속도가 매우 빠르다. 데이터 타입 확인하고 싶다면https://redis.io/docs/latest/develop/data-types/ 사용 사례는 다음과 같다. 1. 캐시(Cache)자주 요청되는 데이터(DB 또는 API 결과)를 Redis에 저장해놓고, 사용자가 요청할 때마다 빠르게 제공한다.즉, 미리 결과를 저장해놓고 요청이 올 때 DB 또는 API를 참조하지 않고 Cache에 접근해 처리한다.예) 인기 게시글, 상품 정보, 검색 결과 2. 세션로그인 세션 데이터를 Red..
ExceptionResolver는 스프링 MVC에서 컨트롤러 실행 중에 예외가 발생할 때 이를 잡아 적절한 응답을 해주는 인터페이스 클레스이다. 여러 Resolver를 한 묶음으로 묶어 순서대로 실행해주는 컨테이너가 HandlerExceptionResolverComptosite이다.그래서 스프링 부트는 에러가 발생하면 다음과 같은 순서대로 예외 처리가 실행된다.HandlerExceptionResolverComposite ├─ 1. ExceptionHandlerExceptionResolver ├─ 2. ResponseStatusExceptionResolver └─ 3. DefaultHandlerExceptionResolver ExceptionHandlerExceptionResolver스프링에서 가장 많이 ..
스프링이 아닌 순수 서블리 컨테이너에서 예외를 어떻게 처리하는 알아본다. 자바에서 메인 메소드가 실행되면 main이라는 이름의 쓰레드가 실행된다.실행 도중에 예외를 잡지 못하고 처음 실행한 main 메소드로 넘어와서 예외가 던져지면 쓰레드가 종료된다.반면 웹 애플리케이션은 사용자 요청별로 쓰레드가 할당되고 서블릿 컨테이너 안에서 실행된다.만약 애플리케이션이 예외를 못 잡고, 서블릿까지 예외가 전달되면 WAS까지 결국 전달되어 500에러 발생한다.(WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러) 스프링 부트를 통해서 서블릿 컨테이너를 사용하기 때문에 스프링 부트가 제공하는 기능을 이용해 서블릿 오류페이지를 등록해보겠다.public class WebServerCustomizer implements We..
지구용사
영차영차 공부하는