Nền
Đôi khi, trong quá trình sử dụng Redis, chúng ta có thể gặp phải sự cố, chẳng hạn như quá nhiều bộ nhớ hoặc đầy băng thông. Khi gặp những vấn đề này, chúng ta cần phân tích bộ nhớ của Redis.
Có hai loại phân tích bộ nhớ cho Redis:phân tích trực tuyến và phân tích ngoại tuyến. Phân tích trực tuyến kết nối trực tiếp với máy chủ Redis và phân tích bộ nhớ của nó, điều này sẽ làm tăng tải trên máy chủ Redis. Điều này có thể ảnh hưởng đến sự ổn định của máy chủ Redis. Phân tích ngoại tuyến dựa trên các tệp sao lưu RDB, điều này sẽ không ảnh hưởng đến tính ổn định của máy chủ Redis. Bạn nên thực hiện điều này khi bộ nhớ đã sử dụng lớn hơn 2GB.
Làm cách nào chúng tôi có thể phân tích bộ nhớ của Redis ngoại tuyến? Có hai công cụ nổi tiếng trong thế giới nguồn mở có thể giúp chúng ta: redis-rdb-tools và rdr.
redis-rdb-tools được Python triển khai và rdr được Golang triển khai. Nếu các nhà phát triển không quen với hai ngôn ngữ này và muốn mở rộng một số chức năng dựa trên chúng thì quá trình này có thể khó khăn hơn. Tiếp theo, tôi sẽ giới thiệu một công cụ phân tích ngoại tuyến khác do C# triển khai để các nhà phát triển C# dễ dàng mở rộng hơn.
công cụ rdb
rdb-tools là một công cụ để phân tích/phân tích các tệp redis rdb do c# triển khai.
Nó bao gồm hai phần:
- Thư viện trình phân tích cú pháp mà bạn có thể tự tùy chỉnh.
- Một công cụ cli phân tích mà bạn có thể phân tích một số cách sử dụng cơ bản cho dòng lệnh.
Thư viện trình phân tích cú pháp dựa trên net6.0 để chúng ta có thể dễ dàng mở rộng nó.
Công cụ cli cũng dựa trên net6.0 , được xây dựng bằng dòng lệnh-api và có thể được đóng gói thành tệp nhị phân mà không cần phụ thuộc vào thời gian chạy.
Cách sử dụng công cụ CLI
Có hai cách để cài đặt rdb-cli .
- Nếu bạn không cài đặt .NET 6.0 SDK, hãy tải xuống công cụ này từ bản phát hành ổn định mới nhất dựa trên phiên bản hệ điều hành của bạn.
- Nếu đã cài đặt .NET 6.0 SDK, bạn có thể sử dụng
dotnet tool install --global rdb-cliđể cài đặt.
Sau đây chúng tôi sẽ trình bày cách thứ nhất.
Sau khi tải xuống và giải nén, bạn sẽ nhận được một tệp thực thi có tên rdb-cli .
Nhập vào ./rdb-cli -h để nhận thông tin trợ giúp.

Như bạn có thể thấy, có hai lệnh mà chúng ta có thể sử dụng. Lệnh quan trọng nhất là bộ nhớ .

Từ thông tin trợ giúp, bạn có thể thấy rằng bạn cần chỉ định tệp RDB và một số tùy chọn cụ thể.
Một ví dụ đơn giản và phổ biến như sau:
./rdb-cli memory /tmp/test/demo.rdb -ot html Lệnh này sẽ phân tích tệp rdb và kết quả phân tích sẽ được trình bày dưới dạng HTML.
Ảnh chụp màn hình bên dưới hiển thị đầu ra của lệnh thực thi. Rõ ràng là chỉ mất 32 giây để phân tích một tệp RDB 2,1 GB, đây là tốc độ tương đối nhanh.

Đầu ra báo cáo HTML chi tiết ở dạng /tmp/test/res.html
Hãy cùng xem nhé.




Kết quả HTML chứa ba phần:
Phần đầu tiên là thông tin cơ bản, bao gồm thông tin phiên bản RDB, thông tin phiên bản redis, tổng bộ nhớ và tổng số key.
Phần thứ hai là một vài biểu đồ, chủ yếu là phân bổ bộ nhớ và số lượng của các loại dữ liệu khác nhau, cũng như phân bổ bộ nhớ và số lượng của thời gian hết hạn.
Phần thứ ba là một số bảng, bao gồm danh sách tiền tố khóa trên cùng, danh sách khóa lớn hàng đầu, danh sách luồng hàng đầu và danh sách chức năng (redis 7.0).
Ngoài ra, nếu bạn không muốn phân tích tất cả thông tin và muốn lọc một số điều kiện, bạn có thể chỉ định các tùy chọn tham số khác nhau.
Hai ví dụ:
1. Khi bạn chỉ muốn phân tích DB 9 và DB 10:
./rdb-cli memory /tmp/test/demo.rdb -ot html --db 9 --db 10
2. Khi bạn chỉ muốn phân tích loại băm và chuỗi:
./rdb-cli memory /tmp/test/demo.rdb -ot html --type string --type hash Việc phân tích các tệp RDB 2 ~ 8GB được bổ sung để tham khảo.

Các công cụ CLI được mô tả ở trên có thể không hoàn toàn phù hợp với nhu cầu của bạn. Tại thời điểm này, chúng tôi có thể tùy chỉnh các yêu cầu tùy chỉnh của mình dựa trên thư viện lớp phân tích cú pháp.
Cách sử dụng thư viện trình phân tích cú pháp
Cài đặt RDBParse gói từ nuget lúc đầu.
dotnet add package RDBParse
Tiếp theo, bạn cần thêm một lớp triển khai để triển khai IReaderCallback giao diện.
Sau đó, tạo một phiên bản mới của BinaryReaderRDBParser lớp học.
Cuối cùng, hãy gọi Parse phương pháp của BinaryReaderRDBParser ví dụ của.
Ví dụ như đoạn mã dưới đây.
public class MyReaderCallBack : IReaderCallback
{
}
var path = "/yourpath/your.rdb"
var cb = new MyReaderCallBack();
var parser = new RDBParser.BinaryReaderRDBParser(cb);
parser.Parse(path); Tóm tắt
Bài viết này giới thiệu một công cụ phân tích RDB dựa trên C# và hiểu cách sử dụng cơ bản cũng như cách tùy chỉnh nó.
Tôi hy vọng điều này sẽ giúp ích cho bạn!
Tham khảo
- Trang github của công cụ rdb
- rdb.c của redis
- trang github thứ 3
- trang github redis-rdb-tools