배경
때로는 Redis를 사용하는 과정에서 너무 많은 메모리나 전체 대역폭과 같은 문제가 발생할 수 있습니다. 이러한 문제가 발생하면 Redis의 메모리를 분석해야 합니다.
Redis에는 온라인 분석과 오프라인 분석이라는 두 가지 종류의 메모리 분석이 있습니다. 온라인 분석은 Redis 서버에 직접 연결하여 해당 메모리를 분석하므로 Redis 서버의 부하가 증가합니다. 이는 Redis 서버의 안정성에 영향을 미칠 수 있습니다. 오프라인 분석은 RDB 백업 파일을 기반으로 하며 Redis 서버의 안정성에는 영향을 미치지 않습니다. 사용된 메모리가 2GB보다 큰 경우에 권장됩니다.
Redis의 메모리를 오프라인에서 어떻게 분석할 수 있나요? 오픈소스 세계에는 우리에게 도움이 될 수 있는 두 가지 잘 알려진 도구가 있습니다. 바로 redis-rdb-tools와 rdr입니다.
redis-rdb-tools는 Python으로 구현되고, rdr은 Golang으로 구현됩니다. 개발자가 이 두 언어에 익숙하지 않고 이를 기반으로 일부 기능을 확장하려는 경우 프로세스가 더 어려울 수 있습니다. 다음으로, C# 개발자가 더 쉽게 확장할 수 있도록 C#으로 구현된 또 다른 오프라인 분석 도구를 소개하겠습니다.
rdb-도구
rdb-tools는 c#으로 구현된 redis rdb 파일을 구문 분석/분석하는 도구입니다.
두 부분으로 구성됩니다:
- 직접 맞춤설정할 수 있는 파서 라이브러리.
- 명령줄의 몇 가지 기본 사용법을 분석할 수 있는 분석 CLI 도구입니다.
파서 라이브러리는 net6.0을 기반으로 합니다. 쉽게 확장할 수 있도록 말이죠.
CLI 도구도 net6.0을 기반으로 합니다. , 명령줄 API를 사용하여 구축되었으며 런타임 종속성 없이 바이너리 파일로 패키징될 수 있습니다.
CLI 도구 사용
rdb-cli를 설치하는 방법에는 두 가지가 있습니다. .
- .NET 6.0 SDK를 설치하지 않는 경우 OS 버전에 따라 최신 안정 버전에서 도구를 다운로드하세요.
- .NET 6.0 SDK를 설치한 경우
dotnet tool install --global rdb-cli을 사용할 수 있습니다. 설치합니다.
여기서는 첫 번째 방법을 보여드리겠습니다.
다운로드하고 압축을 풀면 rdb-cli라는 실행 파일이 생성됩니다. .
./rdb-cli -h을 입력하세요. 도움말 정보를 얻으려면.

보시다시피 우리가 사용할 수 있는 명령은 두 가지입니다. 가장 중요한 명령은 메모리입니다. .

도움말 정보를 보면 RDB 파일과 일부 특정 옵션을 지정해야 한다는 것을 알 수 있습니다.
간단하고 일반적인 예는 다음과 같습니다:
./rdb-cli memory /tmp/test/demo.rdb -ot html 이 명령은 rdb 파일을 분석하고, 분석 결과를 HTML 형식으로 보여줍니다.
아래 스크린샷은 실행 명령의 출력을 보여줍니다. 2.1GB RDB 파일을 분석하는데 걸리는 시간은 32초에 불과해 상대적으로 빠른 속도임을 알 수 있다.

/tmp/test/res.html의 자세한 HTML 보고서 출력
한번 살펴보겠습니다.




HTML 결과에는 세 부분이 포함됩니다:
첫 번째 부분은 RDB 버전 정보, Redis 버전 정보, 총 메모리 및 총 키 수를 포함한 기본 정보입니다.
두 번째 부분은 몇 가지 히스토그램으로, 주로 다양한 데이터 유형의 메모리 및 수량 분포와 만료 시간의 메모리 및 수량 분포를 보여줍니다.
세 번째 부분은 최상위 키 접두사 목록, 최상위 큰 키 목록, 최상위 스트림 목록 및 함수 목록(redis 7.0)을 포함하는 몇 가지 테이블입니다.
또한 모든 정보를 분석하고 싶지 않고 일부 조건을 필터링하려는 경우 다른 매개변수 옵션을 지정할 수 있습니다.
두 가지 예:
1. DB 9, DB 10만 분석하고 싶을 때:
./rdb-cli memory /tmp/test/demo.rdb -ot html --db 9 --db 10
2. 해시 및 문자열 유형만 분석하려는 경우:
./rdb-cli memory /tmp/test/demo.rdb -ot html --type string --type hash 참고용으로 2~8GB RDB 파일 분석을 보완하였습니다.

위에 설명된 CLI 도구는 귀하의 요구 사항에 완전히 적합하지 않을 수 있습니다. 현재 구문 분석 클래스 라이브러리를 기반으로 사용자 정의 요구 사항을 맞춤 설정할 수 있습니다.
파서 라이브러리 사용
RDBParse 설치 처음에는 nuget에서 패키지를 가져옵니다.
dotnet add package RDBParse
다음으로, IReaderCallback을 구현하기 위해 구현 클래스를 추가해야 합니다. 인터페이스입니다.
그런 다음 BinaryReaderRDBParser의 새 인스턴스를 만듭니다. 수업.
마지막으로 Parse에 전화하세요. BinaryReaderRDBParser의 메소드 님의 인스턴스입니다.
예를 들어 아래 코드를 따르세요.
public class MyReaderCallBack : IReaderCallback
{
}
var path = "/yourpath/your.rdb"
var cb = new MyReaderCallBack();
var parser = new RDBParser.BinaryReaderRDBParser(cb);
parser.Parse(path); 요약
이 글에서는 C# 기반의 RDB 분석 도구를 소개하고 기본적인 사용법과 커스터마이징 방법을 설명합니다.
이것이 도움이 되기를 바랍니다!
참조
- rdb-tools github 페이지
- redis의 rdb.c
- rdr github 페이지
- redis-rdb-tools github 페이지