1. 운영체제: 메모리관리
가상 메모리에 대해 설명해보세요.
2. Redis에 대해서 간단히 설명해주세요.
읽은 사이트
https://devlog-wjdrbs96.tistory.com/374
https://steady-coding.tistory.com/586
redis는 Memcache와 비슷한 캐시 시스템
1) 영속성 persistence == 상태가 유지됨
데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성
disk에 데이터를 저장함: 서버가 내려가도 disk에서 데이터 읽음
Disk에 데이터 저장 방식
- RDB(Snapshotting) 방식
- 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
- AOF(Append On File) 방식
- Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태
2) 인 메모리 DataBase
메모리에 데이터를 저장, 조회 -> 빠름
저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점
3)key-value 타입의 저장소
4) 싱글 스레드
싱글 스레드 -> thread safe : 연산을 하나씩 처리한다
5) 다양한 데이터 구조 지원함
기본: key-value
hash ??
Map??
hashMap??
List??
Set??
Sorted Set??
Stream>>
3. Redis와 Memcached의 차이에 대해서 설명해주세요.
Memcached와 Redis 엔진은 둘 다 인 메모리 키-값 저장소입니다.
NoSql 데이터베이스라고도 할 수 있죠.
1. 1ms 이하의 응답대기시간
1ms 이하의 응답시간을 제공합니다. 데이터를 메모리에 저장하기 때문에,
디스크 기반의 데이터베이스보다 빠르게 데이터를 읽을 수 있습니다.
2.개발의 용이성
문법적으로 사용하기 쉽고, 개발코드 양 또한 적습니다.
3. 데이터 파티셔닝
데이터를 여러 노드에 분산하여 저장시킬 수 있습니다.
따라서 수요가 증가할 때 더 많은 데이터를 효과적으로 처리하기 위하여 스케일아웃이 가능합니다.
4. 다양한 프로그래밍 언어 지원
여러 개발언어를 지원합니다. 자바, 파이썬, C, C++, C#, JavaScript, Node.Js, Ruby, Go 그리고 다른 언어들을 지원합니다.
공통점 출처: https://chrisjune-13837.medium.com/redis-vs-memcached-10e796ddd717
Memcached?
Memcached는 사용이 간편한 고성능 인 메모리 데이터 스토어입니다.
1밀리초 미만의 응답 시간을 제공할 수 있는 성숙하고 확장 가능한 오픈 소스 솔루션을 제공하므로 캐시 또는 세션 스토어로 사용하기 유용합니다. Memcached는 웹, 모바일, 앱, 게임, 광고 기술 및 전자 상거래에서 실시간 애플리케이션을 지원할 때 널리 사용됩니다.
데이터를 디스크 또는 SSD에 저장하는 데이터베이스와는 달리
Memcached는 데이터를 메모리에 유지합니다. 디스크에 액세스할 필요가 없으므로 Memcached와 같은 인 메모리 키 값 스토어는 검색 시간 지연을 방지하고 수 마이크로초 만에 데이터에 액세스할 수 있습니다.
Memcached는 분산형입니다. 즉, 새로운 노드를 추가하여 손쉽게 확장할 수 있습니다.
Memcached가 다중 스레드이므로 컴퓨팅 파워를 손쉽게 확장할 수 있습니다.
속도 및 확장성, 단순한 설계, 효율적인 메모리 관리 및 인기 있는 언어 대부분에 대한 API 지원의 결과로
Memcached는 고성능의 대규모 캐싱 사용 사례에 널리 사용됩니다.
인메모리?
이미지 출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gkenq&logNo=10183400845
디스크: 저장된 내용을 메인 메로로 로딩 -> 실행을 위해 CPU로 데이터 재전송
인메모리: 메인메모리에서 바로 CPU로 데이터 전송