Tooling & Monitoring
redis-cli ไม่ใช่แค่ REPL
หัวข้อที่มีชื่อว่า “redis-cli ไม่ใช่แค่ REPL”redis-cli มาพร้อม diagnostic flag ที่หลากหลายเกินกว่าแค่การพิมพ์คำสั่ง การรู้จักเครื่องมือเหล่านี้ทำให้คุณระบุ query ช้า key ที่กินหน่วยความจำมาก และปัญหา connection ได้โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม
INFO — สถิติ server ในพริบตา
หัวข้อที่มีชื่อว่า “INFO — สถิติ server ในพริบตา”INFO คืนบล็อก key-value สถิติขนาดใหญ่แบ่งตาม section เรียก section เฉพาะเพื่อลด noise:
127.0.0.1:6379> INFO server# Serverredis_version:7.2.4redis_mode:standaloneos:Linux 5.15.0 x86_64...
127.0.0.1:6379> INFO memory# Memoryused_memory_human:1.02Mused_memory_peak_human:1.03M...
127.0.0.1:6379> INFO stats# Statstotal_commands_processed:1024instantaneous_ops_per_sec:12...INFO server
INFO memory
INFO keyspaceSLOWLOG — ค้นหาคำสั่งช้า
หัวข้อที่มีชื่อว่า “SLOWLOG — ค้นหาคำสั่งช้า”Redis บันทึกคำสั่งที่ใช้เวลาเกิน threshold ที่กำหนดได้ (ค่าเริ่มต้น 10 ms) SLOWLOG GET N คืน N entry ล่าสุดพร้อม timestamp, duration และคำสั่งเต็ม:
127.0.0.1:6379> SLOWLOG GET 51) 1) (integer) 3 2) (integer) 1700000000 3) (integer) 15420 4) 1) "KEYS" 2) "*" 5) "127.0.0.1:54321" 6) ""Reset log ด้วย SLOWLOG RESET ปรับ threshold ด้วย:
127.0.0.1:6379> CONFIG SET slowlog-log-slower-than 5000OKSLOWLOG GET 5
SLOWLOG LEN
SLOWLOG RESET—bigkeys — ค้นหา key ที่กินหน่วยความจำมาก
หัวข้อที่มีชื่อว่า “—bigkeys — ค้นหา key ที่กินหน่วยความจำมาก”รันจาก shell (ไม่ใช่ REPL) เพื่อสแกน keyspace ทั้งหมดและรายงาน key ที่ใหญ่ที่สุดต่อแต่ละประเภท:
redis-cli --bigkeysตัวอย่างผลลัพธ์:
-------- summary -------Biggest string found 'session:heavy' has 512000 bytesBiggest list found 'log:events' has 1048576 itemsBiggest hash found 'user:profile:1' has 312 fieldsคำสั่งนี้ใช้ SCAN ภายในดังนั้นจึงไม่บล็อก server
—scan และ —pattern — วนซ้ำ keyspace
หัวข้อที่มีชื่อว่า “—scan และ —pattern — วนซ้ำ keyspace”# แสดง key ทั้งหมดที่ตรง pattern (ใช้ SCAN ภายใน ไม่บล็อก)redis-cli --scan --pattern "session:*"
# นับ key ที่ตรงredis-cli --scan --pattern "cache:*" | wc -l—latency — วัด round-trip time
หัวข้อที่มีชื่อว่า “—latency — วัด round-trip time”redis-cli --latencyredis-cli --latency-history # sample ทุก 15 วินาทีredis-cli --latency-dist # ASCII histogramคำสั่งเหล่านี้ ping Redis ในลูปและแสดง latency min/max/avg ใช้ตรวจจับ network jitter หรือ server ที่ช้าลงกะทันหัน
MONITOR — stream คำสั่งแบบ real-time
หัวข้อที่มีชื่อว่า “MONITOR — stream คำสั่งแบบ real-time”MONITOR stream ทุกคำสั่งที่ server ประมวลผลแบบ real-time:
127.0.0.1:6379> MONITOROK1700000001.123456 [0 127.0.0.1:54322] "SET" "foo" "bar"1700000001.124000 [0 127.0.0.1:54322] "GET" "foo"มีประโยชน์อย่างยิ่งในการ debug ว่าแอปพลิเคชันส่งอะไรจริงๆ กด Ctrl+C เพื่อหยุด
CLIENT LIST — ตรวจสอบ connection
หัวข้อที่มีชื่อว่า “CLIENT LIST — ตรวจสอบ connection”CLIENT LIST แสดง client ที่เชื่อมต่ออยู่ทุกตัวพร้อม id, address, database, command และ memory usage:
127.0.0.1:6379> CLIENT LISTid=5 addr=127.0.0.1:54321 laddr=127.0.0.1:6379 fd=8 name= age=0 idle=0 flags=N db=0 cmd=client|list ...Kill connection ที่ค้างอยู่ด้วย CLIENT KILL id 5
CLIENT LIST
CLIENT GETNAME
CLIENT INFORedisInsight — GUI สำหรับ Redis
หัวข้อที่มีชื่อว่า “RedisInsight — GUI สำหรับ Redis”RedisInsight คือ GUI อย่างเป็นทางการที่ให้ใช้ฟรีจาก Redis Ltd มี visual keyspace browser, slow-log viewer, memory profiler และ built-in CLI ดาวน์โหลดได้จาก redis.io/insight และเชื่อมต่อกับ Redis instance ใดก็ได้ — local หรือ remote
ข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ตัวเลือก | Benefit | Cost |
|---|---|---|
SLOWLOG + INFO stats สำหรับ diagnostics ปกติ | ปลอดภัยที่จะเปิดทิ้งไว้ใน production ไม่เพิ่ม load | ไม่เห็นคำสั่งแบบ real-time ต้อง poll หรือ query ย้อนหลัง |
MONITOR สำหรับ debug แบบ real-time | เห็นทุกคำสั่งที่แอปส่งจริง ๆ ทันที เหมาะกับ debug session สั้น ๆ | เพิ่ม server write load ประมาณสองเท่า อันตรายถ้าลืมปิดใน production |
--bigkeys / --scan (ใช้ SCAN ภายใน) | สแกน keyspace ทั้งหมดได้โดยไม่บล็อก server | ยังคงกิน CPU/network ต่อเนื่องระหว่างสแกน ควรรันตอน traffic ต่ำ |
| RedisInsight GUI | มองเห็นภาพรวม keyspace, slow log และ memory ได้ง่ายกว่า CLI | ต้องติดตั้งเพิ่มเติมและเปิด network access ไปยัง Redis instance |
ข้อผิดพลาดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ข้อผิดพลาดที่พบบ่อย”- เปิด
MONITORทิ้งไว้ใน production — คำสั่งนี้เพิ่ม write load ของ server ประมาณสองเท่าเพราะต้องส่งสำเนาทุกคำสั่งไปยัง monitoring client ใช้เฉพาะช่วง debug สั้น ๆ บน staging หรือ replica traffic ต่ำเท่านั้น - ใช้
KEYS *แทน--bigkeys/--scanเพื่อสำรวจ keyspace —KEYS *บล็อก server จนกว่าจะสแกนครบ ส่วน--bigkeysและ--scanใช้SCANภายในซึ่งไม่บล็อก - ไม่เคยตรวจ
SLOWLOGหรือINFO statsจนกว่าจะเกิดปัญหา performance จริง — ควร monitor เป็นประจำเพื่อจับ query ช้าหรือ memory ที่โตผิดปกติตั้งแต่เนิ่น ๆ ไม่ใช่รอให้ระบบล่มก่อน
💡 ตัวอย่างจากของจริง
ทีม SRE ทั่วไปที่ดูแล Redis fleet — ใช้
INFO statsและSLOWLOGเป็นส่วนหนึ่งของ dashboard monitoring มาตรฐาน (ต่อกับ Grafana/Prometheus) แทนการเปิดMONITORซึ่งมีต้นทุนสูงเกินไปสำหรับ productionRedisInsight ในทีม dev — ใช้เป็นเครื่องมือ debug ประจำวันสำหรับดู key ที่ใหญ่ผิดปกติและ slow query ระหว่างพัฒนา ก่อนที่ปัญหาจะไปถึง production