Category: redis

0

Redis) 이것이 레디스다 16 - 레디스 튜닝 1 (기본)

레디스를 안정적으로 운영하려면 레디스 환경 설정과 운영체제 간의 관계를 이해해야 한다.운영 환경에 따라서 적절한 설정값을 지정해야 하기 때문이다. 레디스 설정파일설정파일은 레디스를 시작할 때 사용하는 redis 명령행의 인자로 지정된다.그렇기 때문에 설정파일을 수정하고 반영하려면 레디스를 재기동 해야한다.재기동 없이 설정을 변경하고 싶다면 config se

0

Redis) 이것이 레디스다 15 - 기타 고려사항

앞서 살펴본 임계점과 메모리 설정외에 다른 고려사항을 알아보자. 스냅샷 AWS와 같은 가상환경에서 레디스를 사용한다면 스냅샷 파일의 위치는 반드시 로컬 파일 시스템을 사용하자.레디스의 스냅샷 이벤트가 발생하면 매우 짧은 시간에 매우 많은 디스크 입출력이 발생하는데,EBS 같은 외부 저장장치는 로컬 디스크에 비해 스냅샷 파일을 기록하는데 많은 시간이 소요된다

0

Redis) 이것이 레디스다 14 - 메모리 설정

fork 함수는 부모의 프로세스와 동일한 크기의 메모리를 사용하는 프로세스를 생성한다.부모 프로세스 만큼의 메모리가 남아있지 않으면 fork 함수가 실패한다.레디스의 AOF이나 스냅샷을 위해 호출한 fork 함수가 실패한 이후 레디스의 모든 쓰기 연산은 실패를 응답한다. 레디스의 fork 함수에 의해 생성된 자식 프로세스는 쓰기 연산이 발생하지 않으면 부모

0

Redis) 이것이 레디스다 13 - 임계점

논리적으로 스케일 아웃의 한계는 없지만 현실적으로는 네트워크 대역폭 등의 한계가 있는데 이를 임계점이라 한다. 여러개의 인스턴스를 하나의 서버에서 올릴 때 레디스는 하나의 코어(단일 쓰레드)를 사용하기 때문에 코어의 수보다 코어 하나의 성능이 레디스의 성능에 영향을 준다. 그렇다면 멀티코어 시스템에서 성능을 높이기 위해서 인스턴스 여러 개를 실행하는 방

0

Redis) 이것이 레디스다 12 - 샤딩 기법

샤딩은 다른 용어로 파티셔닝(Partioning)으로 부른다.파티셔닝은 각 데이터를 특정 조건에 따라서 서버에 분산 저장하는 기법이다.샤딩은 동일한 갯수의 하드웨어를 사용할 때 복제에 비해서 더 많은 데이터를 저장할 수 있다. 복제의 경우 마스터 노드에 쓰기 연산이 발생하면 슬레이브 노드에도 쓰기 연산이 발생해야 동기화가 유지된다. 그렇기 때문에 복제를 통

0

Redis) 이것이 레디스다 11 - 복제 기법

레디스는 단일 스레드로 동작하기 때문에 하나의 레디스 인스턴스가 사용할 수 있는 최대 CPU의 갯수는 하나이다.따라서 성능을 높이기 위해 CPU를 추가하는 것은 성능 향상에 큰 도움은 되지 않는다. ※ 4.0 버전 부터는 AOF 작업 등을 위해 4개의 쓰레드로 동작한다.(참고: http://redisgate.kr/redis/configuration/redi

0

Redis) 이것이 레디스다 10 - 레디스 내부 구조 2

문자열 데이터레디스는 문자열 데이터에 대한 빠른 연산을 위해서 특별한 구조체를 사용한다. 12345struct sdshdr { int len; // 문자열의 길이가 저장되는 필드 int free; // 할당된 버퍼의 남은 길이가 저장되는 필드, 문자열 값이 추가될때 새로운 메모리 할당 여부를 결정한다. char buf[]; // 문

0

Redis) 이것이 레디스다 9 - 레디스 내부 구조 1

레디스 객체레디스는 데이터를 관리하기 위해 redisObject 객체를 사용한다. 123456789// redis.h에 선언되어있다.typeof struct redisObject { unsigned type:4; // 레디스에 저장된 객체의 데이터 형 unsigned notused:2; // 사용되지 않는 필드 unsigned en

0

Redis) 이것이 레디스다 8 - 파이프라인

대량의 데이터를 입력하는 방법 레디스 클라이언트 라이브러리를 사용하여 하나씩 순차적으로 데이터를 입력하는 방법 가장 접근하기 쉽지만 하나씩 순차적으로 입력하는 방법은 데이터 입력에 걸리는 시간이 현저하게 느리다. 또한 라이브러리를 사용하면 네트워크 통신으로 인한 시간이 데이터 처리 시간과 별개로 추가된다. 레디스 파이프라인을 사용하여 한꺼번에 입력하는

0

Redis) 이것이 레디스다 7 - 레디스 프로토콜

레디스 프로토콜을 통해 모든 명령을 수신한다.데이터 통신을 위한 채널은 TCP/IP이며 포트는 redis.conf의 port를 사용한다. 프로토콜 구조레디스 프로토콜은 binary-safe 하다. 즉, 전송되는 데이터에 의해 프로토콜이 오작동을 일으키지 않는다.(줄바꿈 문자로 인해 데이터를 모두 전송하지 못하는 등 데이터에 의해 프로토콜 오작동이 일어나면