작은 값, < 100 바이트가 포함 된 매우 큰 키 집합, 200M 키가 있으며 Redis를 사용하려고합니다. 문제는 내가 10 개의 Redis DB를 사용하여 키를 분할하는 것이지만, 현재는 10 개의 Redis DB가있는 단일 서버에 있습니다. Redis DB는 평균적으로 SELECT
을 사용합니다.
내 계산에서 보면 메모리를 날려 버릴 것 같습니다. 나는이 경우 4TB 이상의 메모리가 필요하다고 생각한다. 내 옵션은 무엇입니까? 첫째, 나의 계산은 100MB의 값을 가진 10000 개의 키를 기반으로합니다. 220 바이트의 RAM을 사용합니다 (이것은 내가 발견 한 테이블에서 나온 것입니다).
간단하게 (2*10^8/10^4) * 220MB = 4.4TB
을 입력하십시오.Redis : 큰 키 집합을위한 서버의 효율적인 클러스터
계산이 정확하면 내 옵션은 무엇입니까? Redis VM이 더 이상 옵션이 아닌 다른 게시물을 읽었습니다. Redis 클러스터를 사용할 수 있습니까? 여전히 실용적으로 사용하려면 너무 많은 서버가 필요합니다.
다른 DB로 전환 할 수 있음을 알고 있지만 최후의 수단으로 사용하겠습니다.
당신이 하나의 해시에 여러 개의 키를 사용하려고 있나요? 이렇게하면 메모리 사용량을 10 번 줄일 수 있습니다. – antirez
해싱/압축 전략을 검토 중입니다. 아마이 주제에 대해서 질문을 게시해야할까요? 문제에 대한 세부 사항을 말하지는 않았지만 흥미 롭습니다. 우리는 S3 엔드 포인트를 수행하고 있으므로 키는 사용자가 지정한 "경로"이고 값은 내부 객체 "경로"입니다. 키는 256 자 내의 아무 것이나 될 수 있습니다.실제 파일 경로로 바꿔야하지만 우리가 완전히 통제 할 수있는 가치입니다. 즉, 포인터를 사용하면 파일을 가져와야합니다. 그래서 압축이나 해싱 기술을 사용하여 데이터베이스를 줄일 수 있습니다. 다음 단계입니다. – tradetree
깔끔한 프로젝트처럼 들리지만 통찰력을 얻거나 아이디어를 해시 (:)하려는 경우 [redis-db 메일 링리스트] (https://groups.google.com/forum/#)로 공유하십시오. ! forum/redis-db)도 있습니다. –