Spring의 Cache 추상화개발을 하다 보면, 동적으로 변하진 않는데, 자주 필요한 데이터들을 조회하는 API를 호출할 일이 종종 있다. 간단한 예시로 아래와 같은 상황이 있을 수 있다.Frontend에서 select-box의 값을 채우기 위한 data List 조회외부 API에서 특정 데이터를 조회하는데, 외부 API에서 제공하는 데이터의 갱신 주기가 길 때자주 호출되는 데이터이지만, 실시간으로 변하는 값이 아닐 때Spring은 자주 호출되는 메서드의 실행 결과를 캐시에 저장하고, 이후 동일한 요청이 들어오면 캐시 된 값을 반환하여 응답 속도를 높이고 시스템 부하를 줄일 수 있도록 캐싱 기능을 추상화하여 제공한다.캐시 구현체와 무관하게 사용할 수 있도록 @Cacheable, @CacheEvict, ..
이 글은 제 포트폴리오에서 사용된 기술에 대한 내용을 다루고 있습니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! [Redis] 💡Redis의 특징 ⬇️정리 더보기 key - value쌍의 해시맵과 같은 구조를 가진 NoSQL이다. 오픈소스 기반으로 인메모리 데이터 저장소로, 메모리에 데이터를 저장한다. 1. 성능 모든 데이터를 메모리에 저장되어 대기 시간을 낮추고 처리량을 높인다. 읽기, 쓰기 속도가 RDBMS에 비해 빠르다. 2. 유연한 데이터 구조 String, List, Set, HashMap 등 다양한 데이터타입을 지원한다. 3. 개발 용이성 쿼리..
문제 상황 어떤 데이터에 대해 매우 빠르게 수정이 일어날 때 동시성 문제가 발생할 수 있다. 예를 들어 A라는 데이터를 수정하는 로직이 0.1초 소요되는데, 0.001초 간격으로 A라는 데이터를 수정하는 요청이 여러 번 들어왔을 때 값이 제대로 수정되지 않을 수 있다. 이럴 때, DB 데이터 수정의 순차적 처리를 보장하기 위한 방법으로 Lock이 있다. Lock 트랜잭션 락과 비슷한 개념으로 어떤 데이터 수정, 접근 등에 Lock을 필요로 하게 설정하는 것이다. 데이터를 수정하려면 우선 Lock을 획득하고 수정 후에 Lock을 반납한다. 만약 Lock을 획득할 수 없는 상황에서는 Lock을 획득할 수 있을 때까지 대기하거나 수정을 취소할 수 있다. 분산 락(Distributed Lock) 하나의 공유 자..
Redis 설치 https://redis.io/docs/install/install-redis/install-redis-on-linux/ Install Redis on Linux How to install Redis on Linux redis.io 위의 Redis 공식 사이트에서 설치할 수 있다. Window의 경우 ubuntu 리눅스 서버 설치 후에 사용하는 것을 추천한다. Redis 실행 redis 실행 명령어 ~$ redis-server 위와 같이 6379 port로 redis가 실행된다. Redis client redis client 실행 명령어 ~$ redis-cli 기본 명령어 SET (key) (value) hello - world의 key value 쌍을 생성한다, GET (key) hel..