ข้ามไปยังเนื้อหา

การใช้งาน redis-cli

redis-cli คือ command-line interface ที่มาพร้อมกับทุกการติดตั้ง Redis (และมีให้ใช้งานภายใน official Docker image) รองรับสองโหมด: interactive (REPL prompt แบบสด) และ inline (คำสั่งเดียวที่ส่งตรงจาก shell)

Flag ที่ใช้บ่อยที่สุด:

Flagค่าเริ่มต้นวัตถุประสงค์
-h host127.0.0.1hostname หรือ IP ของ Redis server
-p port6379port ของ Redis server
-n db-number0เลือกหมายเลข database (0–15) เมื่อเชื่อมต่อ
Terminal window
# เชื่อมต่อกับ host และ port ค่าเริ่มต้น
redis-cli
# เชื่อมต่อแบบระบุชัดเจน — มีประโยชน์เมื่อต้องการ target server ระยะไกล
redis-cli -h 127.0.0.1 -p 6379
# เชื่อมต่อและสลับไปยัง database 1 ทันที
redis-cli -n 1

ในโหมด inline คุณส่งคำสั่งเดียวเป็น argument ให้กับ redis-cli และผลลัพธ์จะถูกพิมพ์ไปยัง stdout — เหมาะสำหรับ script:

Terminal window
redis-cli PING

ในโหมด interactive คุณรัน redis-cli โดยไม่มี command argument และได้รับ prompt 127.0.0.1:6379> ซึ่งคุณสามารถพิมพ์คำสั่งทีละคำสั่งได้

PING คือการตรวจสอบที่เบาที่สุดว่า server สามารถเข้าถึงได้:

127.0.0.1:6379> PING
PONG

ส่ง message เพิ่มเติมและ Redis จะส่งกลับมา — มีประโยชน์สำหรับการทดสอบ round-trip latency ใน script:

127.0.0.1:6379> PING "hello world"
"hello world"

ECHO คืน argument โดยไม่เปลี่ยนแปลง มีประโยชน์หลักในการทดสอบว่า client encode string ได้ถูกต้อง:

127.0.0.1:6379> ECHO "Hello"
"Hello"

Redis มี 16 logical database ที่มีหมายเลข 0 ถึง 15 โดยแชร์ server process และ memory เดียวกัน แต่มี keyspace แยกกันอย่างสมบูรณ์ ค่าเริ่มต้นคือ database 0

127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SET greeting "hi from db1"
OK
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> GET greeting
(nil)

สังเกตว่า prompt เปลี่ยนเป็น 127.0.0.1:6379[1] เมื่อคุณอยู่บน database อื่นที่ไม่ใช่ 0

DBSIZE คืนจำนวน key ใน database ที่เลือกอยู่ในขณะนี้:

127.0.0.1:6379> DBSIZE
(integer) 5

FLUSHDB ลบทุก key ใน database ปัจจุบัน การกระทำนี้ไม่สามารถย้อนกลับได้ — ใช้เฉพาะใน development หรือ test environment เท่านั้น:

127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> DBSIZE
(integer) 0

redis-cli มาพร้อมกับเอกสาร inline ใช้ HELP ตามด้วยชื่อคำสั่งหรือ category tag:

127.0.0.1:6379> HELP SET
127.0.0.1:6379> HELP @string

HELP @string แสดงรายการทุกคำสั่งในกลุ่ม string — วิธีที่รวดเร็วในการค้นพบคำสั่งโดยไม่ต้องออกจาก terminal

PING
ECHO "Hello"
SELECT 1
DBSIZE
SELECT 0
ตัวเลือกBenefitCost
ใช้ 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 dashboard

GitHub — วิศวกรใช้ redis-cli ต่อเข้า Redis instance ที่ใช้เก็บ session/cache เพื่อ debug ปัญหาเฉพาะหน้า แต่โค้ด production ทั้งหมดเชื่อมผ่าน client library ไม่ใช่ CLI

Flag ใดที่ใช้เลือก Redis database เฉพาะเมื่อเชื่อมต่อด้วย redis-cli?
PING คืนค่าอะไรเมื่อ server พร้อมใช้งาน?
FLUSHDB ทำอะไร?
จะแสดงรายการคำสั่งทั้งหมดในกลุ่ม string ภายใน redis-cli ได้อย่างไร?