การใช้งาน redis-cli
redis-cli — Redis client มาตรฐาน
หัวข้อที่มีชื่อว่า “redis-cli — Redis client มาตรฐาน”redis-cli คือ command-line interface ที่มาพร้อมกับทุกการติดตั้ง Redis (และมีให้ใช้งานภายใน official Docker image) รองรับสองโหมด: interactive (REPL prompt แบบสด) และ inline (คำสั่งเดียวที่ส่งตรงจาก shell)
ตัวเลือกการเชื่อมต่อ
หัวข้อที่มีชื่อว่า “ตัวเลือกการเชื่อมต่อ”Flag ที่ใช้บ่อยที่สุด:
| Flag | ค่าเริ่มต้น | วัตถุประสงค์ |
|---|---|---|
-h host | 127.0.0.1 | hostname หรือ IP ของ Redis server |
-p port | 6379 | port ของ Redis server |
-n db-number | 0 | เลือกหมายเลข database (0–15) เมื่อเชื่อมต่อ |
# เชื่อมต่อกับ host และ port ค่าเริ่มต้นredis-cli
# เชื่อมต่อแบบระบุชัดเจน — มีประโยชน์เมื่อต้องการ target server ระยะไกลredis-cli -h 127.0.0.1 -p 6379
# เชื่อมต่อและสลับไปยัง database 1 ทันทีredis-cli -n 1โหมด Inline vs โหมด Interactive
หัวข้อที่มีชื่อว่า “โหมด Inline vs โหมด Interactive”ในโหมด inline คุณส่งคำสั่งเดียวเป็น argument ให้กับ redis-cli และผลลัพธ์จะถูกพิมพ์ไปยัง stdout — เหมาะสำหรับ script:
redis-cli PINGในโหมด interactive คุณรัน redis-cli โดยไม่มี command argument และได้รับ prompt 127.0.0.1:6379> ซึ่งคุณสามารถพิมพ์คำสั่งทีละคำสั่งได้
PING — ตรวจสอบการเชื่อมต่อ
หัวข้อที่มีชื่อว่า “PING — ตรวจสอบการเชื่อมต่อ”PING คือการตรวจสอบที่เบาที่สุดว่า server สามารถเข้าถึงได้:
127.0.0.1:6379> PINGPONGส่ง message เพิ่มเติมและ Redis จะส่งกลับมา — มีประโยชน์สำหรับการทดสอบ round-trip latency ใน script:
127.0.0.1:6379> PING "hello world""hello world"ECHO — ส่ง string กลับมา
หัวข้อที่มีชื่อว่า “ECHO — ส่ง string กลับมา”ECHO คืน argument โดยไม่เปลี่ยนแปลง มีประโยชน์หลักในการทดสอบว่า client encode string ได้ถูกต้อง:
127.0.0.1:6379> ECHO "Hello""Hello"SELECT — สลับ database
หัวข้อที่มีชื่อว่า “SELECT — สลับ database”Redis มี 16 logical database ที่มีหมายเลข 0 ถึง 15 โดยแชร์ server process และ memory เดียวกัน แต่มี keyspace แยกกันอย่างสมบูรณ์ ค่าเริ่มต้นคือ database 0
127.0.0.1:6379> SELECT 1OK127.0.0.1:6379[1]> SET greeting "hi from db1"OK127.0.0.1:6379[1]> SELECT 0OK127.0.0.1:6379> GET greeting(nil)สังเกตว่า prompt เปลี่ยนเป็น 127.0.0.1:6379[1] เมื่อคุณอยู่บน database อื่นที่ไม่ใช่ 0
DBSIZE — นับจำนวน key
หัวข้อที่มีชื่อว่า “DBSIZE — นับจำนวน key”DBSIZE คืนจำนวน key ใน database ที่เลือกอยู่ในขณะนี้:
127.0.0.1:6379> DBSIZE(integer) 5FLUSHDB — ล้าง database ปัจจุบัน
หัวข้อที่มีชื่อว่า “FLUSHDB — ล้าง database ปัจจุบัน”FLUSHDB ลบทุก key ใน database ปัจจุบัน การกระทำนี้ไม่สามารถย้อนกลับได้ — ใช้เฉพาะใน development หรือ test environment เท่านั้น:
127.0.0.1:6379> FLUSHDBOK127.0.0.1:6379> DBSIZE(integer) 0HELP แบบ built-in
หัวข้อที่มีชื่อว่า “HELP แบบ built-in”redis-cli มาพร้อมกับเอกสาร inline ใช้ HELP ตามด้วยชื่อคำสั่งหรือ category tag:
127.0.0.1:6379> HELP SET127.0.0.1:6379> HELP @stringHELP @string แสดงรายการทุกคำสั่งในกลุ่ม string — วิธีที่รวดเร็วในการค้นพบคำสั่งโดยไม่ต้องออกจาก terminal
PING
ECHO "Hello"
SELECT 1
DBSIZE
SELECT 0ข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ตัวเลือก | Benefit | Cost |
|---|---|---|
ใช้ redis-cli แบบ interactive | ทดสอบคำสั่งไว เห็นผลลัพธ์ทันที เหมาะกับ debug | ไม่มี connection pooling, retry, หรือ error handling ที่ app จริงต้องการ |
| ใช้ client library ในโค้ดแอป | จัดการ connection lifecycle, pipelining, retry ให้อัตโนมัติ | เขียนโค้ดเพิ่ม ต้อง import library เข้าโปรเจกต์ |
สลับ database ด้วย SELECT | สะดวกสำหรับแยกข้อมูลชั่วคราวใน dev | ไม่ใช่ multi-tenancy จริง ทุก database ยังแชร์ instance, memory, และ performance เดียวกัน |
ข้อผิดพลาดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ข้อผิดพลาดที่พบบ่อย”- ใช้
redis-cliเชื่อมต่อ production โดยตรงเพื่อรันคำสั่งแก้ข้อมูล — เสี่ยงพิมพ์ผิดแล้วFLUSHDBหรือDELโดน key จริง ควรใช้ script ที่ผ่าน review หรือ client library แทนเมื่อทำงานกับข้อมูล production - เข้าใจผิดว่า
SELECTคือการแบ่ง tenant ที่ปลอดภัย — 16 database logical ยังแชร์ CPU, memory และFLUSHALLกระทบทุก database พร้อมกัน ไม่เหมาะใช้แทน per-tenant isolation จริง - ใช้
redis-cliเป็นทางเดียวในการต่อกับ Redis จาก application code — ecosystem ที่ดีคือใช้redis-cliสำหรับ debug/ทดลองเท่านั้น ส่วนโค้ดจริงควรต่อผ่าน client library ที่จัดการ connection pooling และ retry ให้
💡 ตัวอย่างจากของจริง
Stack Overflow — ทีม infra ใช้
redis-cliเพื่อPINGและตรวจสอบ keyspace ของ cache layer หน้า SQL Server เวลามีปัญหา latency ก่อนจะไปดูที่ metrics dashboardGitHub — วิศวกรใช้
redis-cliต่อเข้า Redis instance ที่ใช้เก็บ session/cache เพื่อ debug ปัญหาเฉพาะหน้า แต่โค้ด production ทั้งหมดเชื่อมผ่าน client library ไม่ใช่ CLI