redis - In-Memory - 알아보기

     

     

    이번 포스팅에서는 전세계적으로 유명한 캐시솔루션인 Redis 에 대해서 알아보도록 하겠습니다.!

     

     

     

     

       Redis 란?

     

     

     

     

     

    웹, 인공지능, 빅데이터 등등 생겨나고 데이터의 정보의 크기 커지면서 DataBases의 한계점이 생겼습니다 SSD로 인하여 많이 개선이 되었지만 디스크의 데이터를 저장해야되므로 이또한 한계점에 이르게 됩니다

     

     

     

     

     

    Redis는 하드디스크나 SSD에 데이터를 저장하지 않고 메모리에 저장했다가 같은 페이지의 요청이 있을때 메모리에 저장된 데이터를 빠르게 돌려 주게 됩니다.

    즉, 메모리는 하디디스크나 SSD같은 저장장치보다 훨씬더 빠르기 때문에 고속으로 컨텐츠를 제공할 수 있는 장점이 있고 웹서버의 부담을 획기적으로 줄이면서도 사용자들에게는 훨씬더 빠르게 데이터를 공급해줄 수 있습니다.

     

     

     

     

       Redis 특징

     

     

     

    1. 빠른 처리 속도

     

     

    Redis는 In-Memory 로 디스크가 아닌 메모리에 데이터를 저장하기 때문에 빠른 속도를 발휘할 수 있습니다.

     

     

     

    2. 다양한 DataType(Collection )을 지원

     

     

     

    Redis는 위 그림과 같이 다양한 Data Type을 지원합니다 이렇게 다양한 Data Type을 있으면 개발의 편의성과 생산성이 높아지고 난이도 또한 낮아지게 됩니다

     

     

     

    3. Key와 Value 구조

     

     

    키(Key)-값(Value) 구조이기 때문에 별도 쿼리 없이도 데이터를 간단히 가져올 수 있습니다.

     

     

     

    4. Snapchots 지원

     

     

    Redis는 특정시점에 데이터를 디스크에 저장하여 파일 보관이 가능합니다 이러한 기능으로 장애발생시 복구가 가능합니다 (RDB라는 현재 메모리의 Data Set에 대해서 Snapshot을 만들 수 있는 기능 제공)

     

     

     

    5. Redis Cluster 지원

     

     

    Redis는 Master와 Slaves 로 구성하여 여러대의 복제본을 만들수 있고, 여러대의 서버로 읽기를 확장할 수 있는 클러스터를 제공합니다.

     

     

     

    6. 다양한 프로그래밍 언어 지원

     

     

     

    Redis는 여러 개발언어에서 지원됩니다 자바, 파이썬, C, C++, Ruby, Go, PHP 등등 많은 프로그래밍 언어를 지원합니다.

     

     

     

     

       Redis 주의사항

     

     

     

    1. Single Threaded(싱글 쓰레드) 사용

     

    Single Threaded를 사용하므로 한번에 하나의 명령만 수행이 가능하며 오랜시간이 걸리는 명령을 사용할 경우 장애가 발생하게 됩니다.

     

     

     

    2. 메모리의 파편화

     

    redis는 크고 작은 데이터를 할당하고 해제하는 과정에서 메모리의 파편화가 발생할 수 있습니다 이때 메모리 파편화로 응답속도가 느려지게 됩니다.

     

     

     

    3. 주기적인 모니터링

     

    Redis는 In-Memory Databases로 데이터를 메모리에 저장하기 때문에 주기적인 모니터링을 통해 메모리를 관리해주어야 됩니다.

    Posted by 서버이야기