레디스 편집하기
최신판 | 당신의 편집 | ||
76번째 줄: | 76번째 줄: | ||
*게임 서비스에서 일일 순 방문자 수 구하기: 순 방문자 수는 서비스에 사용자가 하루에 여러 번 방문했더라도 한 번만 카운팅 되는 값이다. 이를 구현하기 위해서는 구글 [[애널리틱스]](Analytics)와 같은 외부 서비스를 이용하거나 접속 정보를 로그 파일로 작성하여 배치 프로그램을 작성하는 방법들이 있다. 레디스의 비트 연산을 활용하면 간단하게 실시간 순 방문자를 저장하고 조회하는 방법을 구현할 수 있다.<ref name="레디스 활용"></ref> | *게임 서비스에서 일일 순 방문자 수 구하기: 순 방문자 수는 서비스에 사용자가 하루에 여러 번 방문했더라도 한 번만 카운팅 되는 값이다. 이를 구현하기 위해서는 구글 [[애널리틱스]](Analytics)와 같은 외부 서비스를 이용하거나 접속 정보를 로그 파일로 작성하여 배치 프로그램을 작성하는 방법들이 있다. 레디스의 비트 연산을 활용하면 간단하게 실시간 순 방문자를 저장하고 조회하는 방법을 구현할 수 있다.<ref name="레디스 활용"></ref> | ||
*출석 이벤트 구현하기: 일일 순 방문자 수 구하기를 이용해 매일 방문자를 구현하였고, 구해놓은 String 간의 비트를 비교하는 BITOP 커맨드를 사용하면 이 서비스를 구현할 수 있다.<ref name="레디스 활용"></ref> | *출석 이벤트 구현하기: 일일 순 방문자 수 구하기를 이용해 매일 방문자를 구현하였고, 구해놓은 String 간의 비트를 비교하는 BITOP 커맨드를 사용하면 이 서비스를 구현할 수 있다.<ref name="레디스 활용"></ref> | ||
+ | |||
+ | ==단점== | ||
+ | *[[메모리]]를 2배로 사용한다. | ||
+ | *레디스는 싱글 스레드이기 때문에 스냅샷을 뜰 때 자식 프로세스를 하나 만들어낸 후 새로 변경된 메모리 페이지를 복사해서 사용한다. | ||
+ | *[[copy-on-write]] 방식을 사용한다. 보통 레디스를 사용할 때는 데이터 변경이 자주 있기 때문에 실제 메모리 크기만큼 자식 프로세스가 복사하게 된다. 그로 인해 실제로 필요한 메모리양보다 더 많은 메모리를 사용하게 된다. | ||
+ | *대규모 트래픽으로 인해 많은 데이터가 업데이트되면 레디스는 Memcached에 비해서 속도가 불안정하다. 이것은 레디스와 Memcached 의 메모리 할당 구조가 다르기 때문에 발생하는 현상이다. | ||
+ | *[[jemalloc]]을 사용하기 때문에 매번 malloc과 free를 통해서 메모리 할당이 이루어진다. 반면 Memcached는 slab 할당자를 이용하여 내부적으로는 메모리 재할당을 하지 않고 관리하는 형태를 취한다. 이로 인해 레디스는 [[메모리 파편화]]가 발생하여 이 할당 비용 때문에 응답 속도가 느려진다. 다만 이는 극단적으로 봤을 때 발생하는 일이다. 대규모 서비스에서도 레디스를 많이 도입하는 것을 보면 일반적으로 스타트업 등에서 사용하여도 무방하다 볼 수 있다.<ref name="레디스">, Redis 개념과 특징 깃허브 - https://goodgid.github.io/Redis/</ref> | ||
+ | ===사용시 주의할 점=== | ||
+ | 레디스는 인메모리 데이터 저장소로서 서버에 장애가 났을 경우 데이터 유실이 발생한다. 따라서 [[스냅샷]](Snapshot)과 [[에이오에프]](AOF) 기능을 통한 복구 시나리오가 제대로 세워져 있어야 데이터 유실에 대비한 사고에 대처할 수 있다. 그리고 캐시 솔루션으로 사용할 시 잘못된 데이터가 캐시 되는 것을 방지, 예방해야 한다. 회사에서 레디스를 운영 중 전 개발자의 실수로 작성된 [[로직]](logic)으로 캐시 데이터가 잘못 [[캐싱]](caching)되어 올바르지 않은 데이터가 꺼내져 한동안 데이터가 꼬이는 일이 있었다. 레디스와 캐싱하고자 하는 데이터 저장소의 데이터가 서로 일치하는지 주기적인 모니터링과 이를 방지하기 위한 사내 솔루션을 개발하는 것이 좋다.<ref>새로비, 〈[https://engkimbs.tistory.com/869 레디스 소개 및 아키텍처, 주의할점 ]〉, 《티스토리》, 2019-06-01</ref> | ||
== 평가 및 전망 == | == 평가 및 전망 == |