Single Thread Model

Redis는 대표적인 Single Thread Model 이다. 

이로 인해 처리가 긴 Transaction이 발생했을 때, 다른 request는 처리하지 못할 수 있다.

대표적으로 flushAll 명령어는 리스트 전체를 Scan하는 구조로 100만개 처리시 1초,1000만개 처리시 10초,  1억개는 100초가 소요된다.

이를 예방하기 위해 데이터를 전체 하나의   Collection에 넣는 것이 아닌 여러 Collection 에 나눠 처리하는 방안이 좋으며 각 Collection당 보통 10000개의 데이터를 저장한다,


다른 예로 데이터를 백업하는 경우에, 앞서 AOF(메모리 덤프 및 디스크 저장)와 RDB(매번 디스크에 Write IO) 방식이 있는 것을 살펴 봤다.

이런 경우 대량의 데이터를 처리하는 경우 성능 저하를 발생하는 또다른 요인이기 때문에, 일반적으로 Master-Slave Model로 레디스를 구성하며 Master Redis는 데이터의 처리를 담당하며 slave redis에서 백업을 진행하는 것이 좋다.


출처: http://bcho.tistory.com/829

https://www.slideshare.net/charsyam2/redis-acc?ref=http://bcho.tistory.com/829



Redis Sing Thread를 회피하기 위해 Scan 을 예로 들 수 있는데  더 자세히 알고 싶다면,  카카오 기술 블로그에 작성된 강대명 개발자의 의견을 꼭 한번 읽어 보는 것을 추천한다.

http://tech.kakao.com/2016/03/11/redis-scan/

'Cloud & NoSQL & Middleware > Redis' 카테고리의 다른 글

Spring 에서 lettuce가 jedis 보다 많이 사용되는 이유  (0) 2018.11.27
Redis Library  (2) 2018.11.17
SpirngBoot에서 Redis 연동(Jedis)  (0) 2018.08.09
Redis 명령어  (0) 2018.08.04
Redis Pub/Sub Model  (0) 2018.07.01

+ Recent posts