2013-08-25 3 views
1

Redis 서버가 제공하는 놀라운 속도에 대해 많이 들었습니다. 따라서 데이터베이스 서버로 PostgreSQL에서 실행되는 기존 Rails 응용 프로그램 중 하나에 연결하는 것이 좋습니다.Redis 키 이름과 키 개수 제한

내 시스템에 약 100,000 명의 사용자가 있고 추종자/다음 패턴을 구현하고 싶다면 Redis 'SET 데이터 유형을 사용할 수 있지만 100000 개의 다른 키가있는 것이 좋습니다. 사용자를 기반으로합니다. 현재 시나리오에서 키를 정의하는 올바른 방법입니까? 그렇다면 redis의 단일 인스턴스에서 숫자 키의 한계는 무엇입니까?

더 나은 키 설계에 대한 제안을 환영합니다.

답변

3

Redis는 수백만 개의 키를 처리 할 때 아무런 문제가 없습니다. 이론적 인 제한은 2^32 키 (FAQ 참조)이므로 실제로는 사용 가능한 메모리의 양이 유일한 제한 요소입니다.

Redis는 기본적으로 키와 목록/해시/세트라는 두 가지 계층 구조 만 지원하므로이 경우 사용자 당 키를 갖는 것이 거의 유일한 옵션입니다.

Redis는 very compact representation for small sets을 사용하므로 대부분의 사용자가 소수의 팔로어 만 사용하는 경우 메모리 사용량이 적어야합니다. *-max-ziplist-* 구성 옵션 집합을 조정하면 특정 데이터 세트에 대해 최적의 결과를 얻을 수 있습니다.

그런데 트위터 사람들이 스택의 부분에 Redis를 사용하여 엄청난 추종자 생성 부하를 처리하는 방법에 관심이 있습니다. real-time delivery architecture 대화가 매우 흥미 롭습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 같은 redis 인스턴스를 사용하는 서버에서 여러 응용 프로그램을 실행하고 있다면 어떻게 될까요? 일반적으로 1GB 서버가있는 경우 따라야 할 최적화 수준을 제안 할 수 있습니까? @rkhayrov – swaroopsm

+0

Redis는 근본적으로 단일 스레드 응용 프로그램입니다. 모든 Redis 명령은 원자 적으로 실행되며'MULTI..EXEC' 블록이나 내장 된 Lua 스크립팅 (http://redis.io/topics/transactions)을 사용하여 일련의 명령을 원자 적으로 만들 수 있습니다. 이 모든 기능 덕분에 Redis는 여러 애플리케이션 인스턴스를위한 탁월한 메시지 버스/동기화 시스템이되었습니다. 수백만 사용자의 Rails 애플리케이션이 1GB RAM에서 실행될 수 있다고 생각하지 않습니다. 특히 RAM의 DB 캐시와 경쟁하고 있습니다. 문제는 의문입니다. 실험과 프로파일 링 만이 알 수 있습니다. – rkhayrov

+0

좋습니다. 두 개의 다른 키, 즉 추종자 및 팔로워가 대략 10000 명의 사용자 규모로 쉽게 운동 할 수 있다고 말하는 것이 좋습니다. – swaroopsm