Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

เครื่องมือที่ครอบคลุมสำหรับการวิเคราะห์ไฟล์ Redis RDB

พื้นหลัง

บางครั้งในกระบวนการใช้ Redis เราอาจประสบปัญหา เช่น หน่วยความจำมากเกินไปหรือแบนด์วิดท์เต็ม เมื่อเราประสบปัญหาเหล่านี้ เราจำเป็นต้องวิเคราะห์หน่วยความจำของ Redis

การวิเคราะห์หน่วยความจำสำหรับ Redis มีสองประเภท:การวิเคราะห์ออนไลน์และการวิเคราะห์ออฟไลน์ การวิเคราะห์แบบออนไลน์เชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ Redis และวิเคราะห์หน่วยความจำ ซึ่งจะเพิ่มภาระงานบนเซิร์ฟเวอร์ Redis สิ่งนี้อาจส่งผลต่อความเสถียรของเซิร์ฟเวอร์ Redis การวิเคราะห์แบบออฟไลน์อิงตามไฟล์สำรอง RDB ซึ่งจะไม่ส่งผลต่อความเสถียรของเซิร์ฟเวอร์ Redis ขอแนะนำเมื่อหน่วยความจำที่ใช้มีขนาดใหญ่กว่า 2GB

เราจะวิเคราะห์หน่วยความจำของ Redis แบบออฟไลน์ได้อย่างไร มีเครื่องมือที่รู้จักกันดี 2 ชิ้นในโลกโอเพ่นซอร์สที่ช่วยเราได้ ได้แก่ redis-rdb-tools และ rdr

redis-rdb-tools ใช้งานโดย Python และ rdr ใช้งานโดย Golang หากนักพัฒนาไม่คุ้นเคยกับสองภาษานี้ และต้องการขยายฟังก์ชันบางอย่างตามภาษาเหล่านั้น กระบวนการนี้อาจยากขึ้น ต่อไป ฉันจะแนะนำเครื่องมือวิเคราะห์ออฟไลน์อีกตัวที่ c# ใช้งาน ซึ่งจะช่วยให้นักพัฒนา c# ขยายได้ง่ายขึ้น

เครื่องมือ rdb

rdb-tools เป็นเครื่องมือสำหรับแยกวิเคราะห์/วิเคราะห์ไฟล์ redis rdb ที่ c# ใช้งาน

ประกอบด้วยสองส่วน:

  • ไลบรารีตัวแยกวิเคราะห์ที่คุณสามารถปรับแต่งได้ด้วยตัวเอง
  • เครื่องมือ anslysis cli ที่คุณสามารถวิเคราะห์การใช้งานพื้นฐานบางอย่างสำหรับบรรทัดคำสั่งได้

ไลบรารีตัวแยกวิเคราะห์จะขึ้นอยู่กับ net6.0  เพื่อให้เราสามารถขยายได้อย่างง่ายดาย

เครื่องมือ cli ยังอิงตาม net6.0 อีกด้วย ซึ่งสร้างขึ้นโดยใช้ command-line-api และสามารถจัดแพ็กเกจเป็นไฟล์ไบนารีโดยไม่ต้องพึ่งพารันไทม์

การใช้งานเครื่องมือ CLI

มีสองวิธีในการติดตั้ง rdb-cli .

  1. หากคุณไม่ติดตั้ง .NET 6.0 SDK ให้ดาวน์โหลดเครื่องมือจากเวอร์ชันเสถียรล่าสุดโดยอิงตามเวอร์ชันระบบปฏิบัติการของคุณ
  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

ภาพหน้าจอด้านล่างแสดงผลลัพธ์ของคำสั่งดำเนินการ เห็นได้ชัดว่าใช้เวลาเพียง 32 วินาทีในการวิเคราะห์ไฟล์ RDB ขนาด 2.1GB ซึ่งเป็นความเร็วที่ค่อนข้างรวดเร็ว

เครื่องมือที่ครอบคลุมสำหรับการวิเคราะห์ไฟล์ Redis RDB

เอาต์พุตรายงาน HTML โดยละเอียดใน /tmp/test/res.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

มีการเสริมการวิเคราะห์ไฟล์ RDB ขนาด 2~8GB เพื่อการอ้างอิง

เครื่องมือที่ครอบคลุมสำหรับการวิเคราะห์ไฟล์ 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);

สรุป

บทความนี้จะแนะนำเครื่องมือวิเคราะห์ RDB ที่ใช้ c# และเข้าใจการใช้งานพื้นฐานและวิธีการปรับแต่ง

ฉันหวังว่านี่จะช่วยคุณได้!

ข้อมูลอ้างอิง

  • หน้า rdb-tools github
  • rdb.c ของ redis
  • หน้า rdr github
  • หน้า redis-rdb-tools github