-
[모각코] 5회차 - Cache 와 Redis학교생활/22-2 '모여서 각자 코딩' 2022. 11. 5. 23:14728x90
An Overview of Cache
Cache 는 메모리 계층 구조 상 Register 다음으로 CPU 코어 가까이에 위치하며, Main Memory 보다 속도가 빠르다.
Cache 는 프로그램에서 직접 읽거나 쓸 수 없고, 하드웨어 메모리 관리 시스템에서 내부적으로 제어한다.
따라서 프로그래머가 코드 상에서 접근할 수 있는 방법이 없다.
Cache
Cache 란,
복잡한 연산이나 시간이 오래 걸리는 연산을 미리 수행/저장해서 빨리 가져와 쓸 수 있게 하는 것이다.Cache 를 사용하는 것은 동일한 요청에 대하여 빠른 응답이 가능하다는 점이다.
최초의 요청에 대한 응답을 전송하는 시점에서 서버는 DB 에서 읽어온 값을 Cache 에 저장해 둘 것이다.
이후에 해당 데이터에 대한 동일 요청이 있을 경우, cache 에서 동일한 요청에 대한 값을 리턴 하며, 데이터의 기본 스토리지 위치(DB 등..)에 액세스 할 때보다 더 빠르게 요청을 처리할 수 있다.
한편, DB 에서 값을 조회하지 않음으로 DB 자원을 다른 요청에 할당할 수 있게 된다.
결국,
1. 데이터를 효율적으로 재사용하여 서비스 전체적으로 빠른 속도를 가질 수 있으며,
2. 많은 요청에 대한 처리를 분산함에 따라 서비스 부하를 감소 시킬 수 있다.
[사용처]
Cache 는 운영 체제, 네트워크 계층, 웹 애플리케이션 및 데이터베이스를 비롯한 다양한 기술 계층에 적용되고 활용될 수 있다.
Caching 시, Q&A 포털, 게임, 미디어 공유 및 소셜 네트워킹 과 같은 읽기 집약적인 여러 애플리케이션 워크로드의 지연시간을 크게 줄이고 IOPS(Input/Output Operations Per Second, IOPS)를 개선할 수 있다.
Caching 되는 정보로는 데이터베이스 쿼리 결과, API 요청-응답, 이미지 파일과 같은 웹 아티팩트가 있다.
Redis
Redis 는,
영속성을 지원하는 In-memory 데이터 저장소이면서 Key-Value 타입으로 저장하는 NoSQL 양쪽의 특징으로 모두 가지고 있다.. In-Memory Computing : application 이 운영을 위한 데이터를 하드디스크가 아닌 메인 메모리에서 수행하는 것을 의미한다.
- list, array 와 같은 데이터를 처리하는데 유용
- 리스트형 입력과 삭제가 MySQL 에 비해 10배 정도 빠른 성능
- 메모리를 활용하여 영속적인 데이터 보존
- 명령어로 명시적 삭제, expires 를 설정하지 않으면 데이터가 삭제되지 않는다.
- snapshot 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장, 해당 시점으로 복구 가능
- 데이터 분실 위험X
- master-slave 형식으로 server 를 구성
- redis 서버는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여거개의 서버를 띄우는 것이 가능
- 실시간으로 데이터를 다른 서버에 복제
- master server 가 다운되어도 slave server 로 접속하면 바로 서비스 유지 가능
- Key- Value 방식
- 빠른 속도: 쿼리(SQL 등..)를 수행하지 않고도 결과를 얻을 수 있음
728x90'학교생활 > 22-2 '모여서 각자 코딩'' 카테고리의 다른 글
[모각코] 6회차 - clock cycle 과 instruction (0) 2022.11.15 [모각코] 4회차 - SharedPreferences (0) 2022.10.31 [모각코] 3회차 - 모프 6주차 정리 (0) 2022.10.27 [모각코] 2회차 - JAVA 복사생성자(Copy Constructor) (1) 2022.10.12 [모각코] 1회차 - Docker (6) 2022.09.28 - list, array 와 같은 데이터를 처리하는데 유용