Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis RDB 파일 분석을 위한 종합 도구

배경

때로는 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를 설치하는 방법에는 두 가지가 있습니다. .

  1. .NET 6.0 SDK를 설치하지 않는 경우 OS 버전에 따라 최신 안정 버전에서 도구를 다운로드하세요.
  2. .NET 6.0 SDK를 설치한 경우 dotnet tool install --global rdb-cli을 사용할 수 있습니다.  설치합니다.

여기서는 첫 번째 방법을 보여드리겠습니다.

다운로드하고 압축을 풀면 rdb-cli라는 실행 파일이 생성됩니다. .

./rdb-cli -h을 입력하세요.  도움말 정보를 얻으려면.

Redis RDB 파일 분석을 위한 종합 도구

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

Redis RDB 파일 분석을 위한 종합 도구

도움말 정보를 보면 RDB 파일과 일부 특정 옵션을 지정해야 한다는 것을 알 수 있습니다.

간단하고 일반적인 예는 다음과 같습니다:

./rdb-cli memory /tmp/test/demo.rdb -ot html

이 명령은 rdb 파일을 분석하고, 분석 결과를 HTML 형식으로 보여줍니다.

아래 스크린샷은 실행 명령의 출력을 보여줍니다. 2.1GB RDB 파일을 분석하는데 걸리는 시간은 32초에 불과해 상대적으로 빠른 속도임을 알 수 있다.

Redis RDB 파일 분석을 위한 종합 도구

/tmp/test/res.html의 자세한 HTML 보고서 출력

한번 살펴보겠습니다.

Redis RDB 파일 분석을 위한 종합 도구

Redis RDB 파일 분석을 위한 종합 도구

Redis RDB 파일 분석을 위한 종합 도구

Redis RDB 파일 분석을 위한 종합 도구

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 파일 분석을 보완하였습니다.

Redis 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 페이지