복붙노트

[REDIS] 500메가바이트 레디 스의 dump.rdb 파일은 5.0GB 메모리에 대해 왜 필요?

REDIS

500메가바이트 레디 스의 dump.rdb 파일은 5.0GB 메모리에 대해 왜 필요?

사실, 난 3 개 레디 스 인스턴스를 가지고 있고이 5백메가바이트 + dump.rdb에 함께 넣어. 레디 스 서버는이 dump.rdb를 읽을 수 있으며 모든 것이 괜찮아 보인다. 그럼 난 더 5.0GB 메모리보다 그 레디 스 서버 비용을 알 수 있습니다. 난 이유를 모르겠어.

거기에 아무것도 내 파일이 잘못인가? 내 DB는 각 키에 대한 값 목록 (80 개) 정수에 대해 포함하고, 만 3에 대한 키가 있습니다.

나는 함께 3 인스턴스를 넣어이 방법을 사용합니다.

PS : 동일한 크기와 동일한 키 값 구조 비용 만의 1GB의 메모리와 다른 dump.rdb.

그리고 KEYNUM처럼 내 데이터 외모 -> {NUM1, NUM2, num3, ...}. 모든 숫자는 1과 4,000,000 사이입니다. 그래서 나는 그들을 저장하는 목록을 사용해야합니까? 지금, 나는 lpush (K, V)를 사용합니다. 이 방법은 비용이 너무 많이 했습니까?

해결법

  1. ==============================

    1.덤프 메모리 크기의 비율은 레디 스 내부적으로 사용하는 데이터의 종류에 따라 달라진다.

    덤프 메모리 크기의 비율은 레디 스 내부적으로 사용하는 데이터의 종류에 따라 달라진다.

    작은 물체 (해시,리스트 및 sortedsets)의 경우, 데이터를 인코딩하는 데 사용 된 ziplists를 레디 스. 정수로 만들어진 작은 세트의 경우, 사용의 Intsets을 레디 스. 그들은 메모리에 저장되므로 ZipLists 및 IntSets 같은 형식으로 디스크에 저장됩니다. 데이터가 이러한 인코딩을 사용하는 경우 : 1의 비율 그래서, 당신은 일을 기대.

    큰 객체의 경우, 메모리의 표현은 디스크상의 표현과 완전히 다르다. 온 디스크 포맷은 메모리 조각화 처리하지 않고, 포인터가없는, 압축됩니다. 당신의 객체가 큰 경우에 따라서, 10 : 디스크 비율 1 메모리는 일반적인 예상이다.

    당신은 당신의 데이터를 프로파일 링, 사용 레디 스-RDB-도구를 메모리를 먹고 오브젝트를 알고 싶은 경우. , redis.io의 메모리 최적화 노트뿐만 아니라 레디 스-RDB-도구에 대한 메모리 최적화 위키 항목이 수행에서.

  2. ==============================

    2.이 더 그것에 수 있지만 나는 레디 스 덤프 파일을 압축 믿을 수 있습니다.

    이 더 그것에 수 있지만 나는 레디 스 덤프 파일을 압축 믿을 수 있습니다.

  3. from https://stackoverflow.com/questions/13243701/why-a-500mb-redis-dump-rdb-file-takes-about-5-0gb-memory by cc-by-sa and MIT license