หัดใช้ Redis CLI และ Redis Commands
Redis CLI คือเครื่องมือที่ใช้จัดการกับ Redis Database ผ่านทาง Command Line
Redis Command คือคำสั่งต่างๆที่ส่งเข้าไปใน Redis Server เพื่อจัดการกับข้อมูลที่อยู่ใน Database ซึ่งเราจะส่ง Command เข้าไปทาง CLI, RedisInsight(GUI) หรือ Library ที่เรานำมาใช้ใน Programming Language ที่เราเขียนก็ได้
Connect to Redis
ก่อนจะ run Redis command เราต้อง connect เข้าไปที่ Redis Server ก่อน ซึ่งเราจะใช้ Redis-Cli(Command Line) หรือ RedisInsight(GUI) connect เข้าไปก็ได้ ในบทความนี้เราจะใช้ Redis-Cli เป็นหลัก ถ้าอยากรู้วิธีการใช้งาน RedisInsight ต่อได้ที่บทความนี้
Connect เข้าไปที่ Redis Server
ถ้าเราต้องการ Connect เข้าไปที่ Redis Server เราจะใช้คำสั่ง
$ redis-cli -u redis://host:port
ยกตัวอย่างเช่น
$ redis-cli -u redis://localhost:6379
ถ้า Host เป็น localhost และ Port เป็น 6379 เราสามารถพิมพิ์แค่ redis-cli
ก็ได้
$ redis-cli
หลังจากที่ redis-cli
connect กับ Server ได้แล้วเราจะได้ผลลัพพธ์แบบนี้ เป็น interactiveshell หน้าตาแบบนี้
localhost:6379>
เราสามารถทดสอบ connection ด้วยการส่ง Command PING เข้าไปถ้าได้รับ PONG กลับมาถือว่า connect กับ Redis Server เสร็จสมบูรณ์
localhost:6379> PING
PONG
Redis Server with Authentication
ถ้า Redis Server ต้องใส่ Username และ Password หรือเปิด Authentication ไว้ เราจะต้องใช้คำสั่งในรูปแบบนี้
$ redis-cli -u redis://myuser:mypassword@localhost:6379
จริงๆแล้วเราสามารถ connect เข้าไปที่ Redis Server ได้โดยไม่ต้องใส่ username และ password แต่เราจะไม่สามารถ run command ได้
localhost:6379> PING
(error) NOAUTH Authentication required.
เราสามารถ Login เข้าไปได้ด้วย Command Auth แบบนี้
localhost:6379> AUTH myuser mypassword
OK
ถ้า user เป็น default user เราจะใส่แค่ password แบบนี้
localhost:6379> AUTH mypassword
OK
เราควรจะตั้ง password ที่แข็งแรงให้กับ Redis แนะนำให้ใช้ Secure random function หรือใช้ openssl ในการ random password ออกมาแบบนี้
$ openssl rand 60 | openssl base64 -A
การเรียกใช้ Command ผ่าน Command Line
จากในตัวอย่างด้านบนหลังจากที่ Redis-Cli Connect กับ Redis Server ได้แล้วเราต้องพิมพิ์ Command เข้าไปเอง แต่ถ้าต้องการให้ Redis-Cli ส่ง Command เข้าไปด้วยเราจะต้องใช้คำสั่ง
$ redis-cli PING
หรือ
$ redis-cli -u redis://localhost:6379 PING
แล้วเราจะได้ผลลัพธ์จาก Command แบบนี้
$ redis-cli -u redis://localhost:6379 PING
PONG
คำสั่งที่ใช้จัดการกับ Key
คำสั่งต่างๆในกลุ่มนี้จะเป็นคำสั่งสำหรับจัดการกับ Key ซึ่งสามารถใช้ได้กับทุกๆ Datatype โดยจะมีคำสั่งต่างๆ ดังนี้
-
KEYS เราจะใช้คำสั่ง KEYS เมื่อเราต้องการดึง Key ทั้งหมดออกมาเราจะใช้คำสั่ง
localhost:6379> KEYS * 1) "user:1234" 2) "user:1235" 3) "member:1111"
ถ้าเราต้องการดึงเฉพาะ Key ที่ขึ้นต้นหรือลงท้ายตามที่เราต้องการเราจะใช้คำสั่ง
localhost:6379> KEYS user* 1) "user:1234" 2) "user:1235"
-
TYPE ถ้าเราอยากรู้ว่าข้อมูลที่อยู่ใน Key นี้เป็น Datatype อะไรเราจะใช้คำสั่ง
localhost:6379> TYPE user:1234 "hash"
-
EXISTS เราจะใช้คำสั่ง EXISTS เมื่อเราต้องการตรวจสอบว่าตอนนี้มี Key ชื่อนี้อยู่หรือไม่ให้ใช้คำสั่ง
localhost:6379> EXISTS user:1234 (integer) 1
ถ้าผลลัพธ์กลับมาเป็น 1 แสดงว่ามี key นี้อยู่แต่ถ้าเป็น 0 หมายถึงไม่มี Key นี้อยู่
-
EXPIRE เราจะใช้คำสั่ง EXPIRE เมื่อต้องการกำหนดเวลาหมดอายุ(Cache จะไม่เก็บข้อมูลไว้ถาวร เพราะจะทำให้ข้อมูลไม่ update)
localhost:6379> EXPIRE user:1234 120
ในตัวอย่างนี้จะเก็บข้อมูล user:1234 ไว้อีก 120 วินาที
-
TTL เราจะใช้คำสั่ง TTL เมื่อต้องการถามว่า Key นี้จะอยู่อีกนานเท่าไหร่
localhost:6379> TTL user:1234 (integer) 110
-
PERSIST เราจะใช้คำสั่ง PERSIST เมื่อต้องการยกเลิก EXPIRE
localhost:6379> PERSIST user:1234 (integer) 1
-
DEL เราจะใช้คำสั่ง DEL เมื่อต้องการลบ Key ออกจาก database
localhost:6379> DEL user:1234 (integer) 1 localhost:6379> EXISTS user:1234 (integer) 0
-
FLUSHALL เป็นคำสั่งที่ใช้ลบทุกๆ Keys ในทุกๆ Databases( ลบทิ้งทั้ง Server) เหมือนเป็นการ reset redis server ใหม่
localhost:6379>FLUSHALL (integer) 1
Strings and Numbers
ถ้าเราต้องการจัดการกับข่้อมูลที่เป็นข้อความและตัวเลขเราจะใช้คำสั่งในกลุ่มนี้
- SET ถ้าต้องการเพิ่มข้อความ หรือตัวเลขเข้าไปใน database เราจะใช้คำสั่ง
ถ้าต้องการ SET ข้อความเข้าไปพร้อมกับระบุเวลา Expire เราจะใช้คำสั่งlocalhost:6379> SET message "Hello" OK
เราจะใช้คำสั่ง SET ทั้งตอน Insert และ Update แต่ถ้าเราต้องการให้ Update อย่างเดียว(ถ้าไม่มี Key นี้มาก่อนให้ return 0 ออกมา)localhost:6379> SET message "Hello" EX 120 OK
ถ้ามี message อยู่แล้วจะได้คำว่า OK ออกมาแต่ถ้าไม่มี Key นี้อยู่ Redis จะตอบ (nil) กลับมาlocalhost:6379> SET message "Hello" XX OK
- GET ถ้าเราต้องการดึงข้อมูลออกมาจาก database เราจะใช้คำสั่ง
localhost:6379> GET message "Hello"
นอกจาก String แล้วเรายังสามารถใส่ Value ที่เป็นตัวเลข(Number) ได้ด้วย ซึ่ง Redis จะมี Command สำหรับเพิ่มหรือลดค่าของตัวเลขดังนี้
- INCR เพิ่มค่าที่ละ 1 ยกตัวอย่างเช่น ถ้าเราต้องการเพิ่มค่าของ key ที่ชื่อ count ขึ้นไปอีก 1 เราจะใช้คำสั่ง
localhost:6379> SET count 10 "OK" localhost:6379> INCR count (integer) 11
- INCRBY เป็นการเพิ่มค่าเหมือนกับ INCR แต่จะสามารถโดยระบุค่าที่เพิ่มเข้าไปได้ เช่น ถ้าเราต้องการเพิ่มค่าให้กับ strength ไปอีก 10 เราจะใช้คำสั่ง
localhost:6379> SET strength 50 "OK" localhost:6379> INCRBY strength 10 (integer) 60
- DECR จะตรงช้ามกับ INCR คือจะเป็นการลดค่าของ key นั้นลงไป 1 เช่น ต้องการลดค่าของ counter ลงไป 1 เราจะใช้คำสั่ง
localhost:6379> SET count 10 "OK" localhost:6379> DECR count (integer) 9
- DECRBY จะเป็นการลดค่าแบบระบุค่าที่ต้องการลดลงได้ เช่น ต้องการลดค่าของ strength ลงไป 10 เราจะใช้คำสั่ง
localhost:6379> SET strength 50 "OK" localhost:6379> DECRBY strength 10 (integer) 40
ใน Datatype ประเภทแรกเราสามารถเก็บข้อมูลเป็นข้อความหรือตัวเลขก็ได้
นอกจากการทำงานกับ Strings และ Number แล้ว Redis ยังมีอีกหลาย Datatype ซึ่งจะทยอยมาในบทความต่อๆไป