Redis ผมรู้จักเจ้าตัวนี้ ก็เมื่อ 4-5 ปีที่แล้ว ตอนนั้นก็งงๆ พี่ๆ เค้าพูด เอาวิวเก็บเข้า Redis เอานู่นนี่นั่นยัดเข้า Redis อะไรที่ต้องการทำไวๆ หายได้ เคลียร์ได้ แบ็คอัพได้ ต้องใช้ ตัวนี้เลย แถมหลังๆ เอามาทำแคชอีก

Redis คืออะไร ?

redis
redis

 

เจ้าตัวนี้มันคือ in-memory data structure store จะบอกว่า Database ถ้าในมุมมองผมมันคือ NoSQL ตัวหนึ่ง ซึ่งใช้ครับเราสามารถใช้มันเก็บข้อมูลได้ครับ ใช้งานง่าย เรียนรู้ง่ายด้วยครับ ก็ตามชื่อเลยครับ หลักการทำงานของ Redis คือ ใช้ Key, Value เท่านั่น สั่งคำสั่งไปที่คีย์นั้นๆ จะได้ข้อมูลตามนี้ ออกมาเลย

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

ข้อดี 

  • ใช้งานง่าย
  • โครตไว
  • ใช้งานได้หลากหลาย

ข้อเสีย

  • ข้อมูลอาจหายง่ายๆ ถ้าทำอะไรพลาด
  • ถ้าทำระบบซับซ้อนมากๆ อาจจะทำให้สับสนได้

 

สรุป Redis มันคือตัวเก็บข้อมูลลง Memory ซึ่งทำให้มันทำงานได้ไวมากๆ ด้วยความที่เป็น Key, Value งานที่ต้องการความไวเช่น การนับยอดคนเข้าชม Concurrent หนักๆ Database Schema ธรรมดาผมว่าไม่หน่วงก็ดับ ถ้าต้อง เขียน/อ่าน หนักๆ หรือจะเอามาทำแคช ข้อมูลได้ กั้นระหว่าง Server กับ User จะได้ไม่ต้องไปหนัก Server มาก เอามาทำแคช เช่น Plugin ของ WordPress ก็มีแล้วนะครับ Redis Cache ข้อดีมันอาจจะมีเยอะกว่านี้อีก ลองใช้ดูครับ แล้วเราจะรู้เองมันควรเอามาใช้ทำอะไร

 

การติดตั้ง

สำหรับพัฒนาในเครื่องท่านเอง ก็ต้องดูนะครับว่าใช้อะไรเป็น VM ถ้าเป็น Homestead ที่ผมแนะนำไปเมื่อคอนเทนต์ที่ผ่านมา จะมีติดอยู่ในเครื่องเลยนะครับ สามารถใช้ได้ วิธีเช๊คว่าของเรามีไหม ลองเข้าไปที่ VM ของเราแล้วพิมพ์

redis-cli -v

//result redis-cli 3.2.9

นี่เป็นตัวอย่างนะครับ

 

ถ้าต้องการจะติดตั้งเอง Step คือ จะต้องมี Redis Server Run Background โดยทำตาม คำสั่งนี้

$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make

Redis Default จะรันที่ Port 6379 Database 0 นะครับ

 

การเรียกใช้

ถ้าใครติดตาม คอนเทนต์ Composer ใช้ครับ เราจะใช้ Composer เพิ่ม Library Predis เข้าไป แล้ว composer install เลยครับ หลังจากนั้น Require vendor/autoload.php ให้เรียบร้อยเลยครับ ตัวอย่าง Project ใหม่ เพียวๆ เคาะคีย์บอร์ด composer init search package predis จบเลย

composer init
composer init

แล้วก็ composer install มันซะ เพื่อโหลด Library ตัวนี้

 

composer install
composer install

 

การใช้งาน 

เข้าไปดู Command ได้ที่เว็บนี้เลยครับ คลิ๊ก เอาหล่ะการใช้งานก็ไม่ยากเลย  เริ่มต้นไป ดูที่ predis ก่อนก็ได้ครับ

ผลลัพธ์ที่ได้

Result
Result

 

เราจะทำ step ตามนี้คือ

  • Require Autoload (เพื่อเรียกใช้งาน Library Predis) // บรรทัดที่ 2
  • สร้าง Client ( สร้างตัวแปรเรียกใช้ ) // บรรทัดที่ 4
  • บันทึกค่าลง Memory //บรรทัดที่ 5
  • ดึงค่าจาก Memory  //บรรทัดที่ 6
  • โชว์ผลลัพท์ //บรรทัดที่ 8

ส่วนด้านขวาคือผลลัพท์ มองให้เป็นเรื่องง่ายครับ ใช่ครับหลักการใช้งาน จริงๆ เริ่มต้นมีเท่านี้จริงๆ ครับ Key, Value ที่บอก Key ในที่นี้คือ foo และ value คือ bar ทำงานผ่านคำสั่ง Set ให้บันทึกลงไปที่ Memory และใช้ Get เพื่อดึงค่ากลับมา

*ง่ายๆ ครับ

 

เพราะฉะนั้น เรื่องสำคัญของ คืออะไร ? สำหรับ ผมเรื่องเรียกเลยคือ รู้จัก Command ของมันครับ ไปดูได้เลยครับที่ Redis.io รวมทุกอย่างไว้แล้วไม่ว่าจะเป็น Command วิธีการใช้ และตัวอย่างผลลัพท์ ครับ ถ้าบทความนี้มีคนให้ความสนใจมากๆ ผมจะอธิบายให้อีกทีนะครับว่า แต่หล่ะ Command หมายถึงอะไรบ้าง แต่ผมเชื่อครับ ว่านักพัฒนาเว็บไซต์ที่หาข้อมูล สามารถทำได้ครับ

คำสังหลักๆ ที่ใช้ประจำก็จะมี

  • Set เอาไว้เก็บค่า
  • Get ดึงค่า
  • Del ลบคีย์
  • Incr เพิ่มค่าอีก +1
  • Keys แสดงดึง คีย์ทั้งหมดที่มี
  • Hmget เก็บค่าเป็น Array ลงคีย์
  • Hmset ดึงค่าเป็น Array จากคีย์
  • Zrevrange  ดึงค่าทั้งหมดในคีย์โดยเรียงตาม สกอ มากไปน้อย ( Sort จากหลังไปหน้า สวนทาง กับ Revrange น้อยไปมาก )
  • Zrem ลบค่าตามลำดับมากไปน้อย
  • Zadd เพิ่มค่าโดยค่านั้น หรือถ้าซ้ำจะเป็นการบวกเพิ่ม
  • Expire ตั้งเวลาหมดอายุคีย์

 

คีย์เวิร์ดในการเดาคำสั่ง

  • ก็มีไม่มากครับ Set เก็บ, Get ดึง, Del หรือ Rem ไรพวกนี้ ลบแน่ๆ แต่จะลบคีย์หรือ value ก็ต้องไปดูกัน
  • สกอ คือการตั้งลำดับ Sort นะครับ อธิบายง่ายๆ ถ้าเรา ใช้
    ZADD myzset 1 "one"  
    // Syntax มันคือ 
    ZADD key [NX|XX] [CH] [INCR]score member [score member ...]
  • วิธีการดูคือ คำสัง Command = Zadd, Key  = myzet , Score = 1, Member = One ถ้าเราดึงค่ามันก็จะได้ one ออกมา โดยเรียงลำดับจาก score ครับ มาดูเต็มกันต่อด้านล่าง

 

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
redis> 

ผมหวังว่าจากที่ผมอธิบายไปและลองยกตัวอย่างมา น่าจะทำให้รู้จัก Redis ขึ้นมานะครับ และลองใช้ดู Project ที่ผมเคยทำ ก็มีทั้งเอามาเก็บยอดวิว, ทำระบบ Schema เว็บใหญ่ๆ ( คนเข้าเว็บเยอะครับ ) ใช้ Key, Value 3-4 ชั้นอยู่เว็บหนึ่ง ใช้งานจริงๆ และเอามาทำ แคช สำหรับ กั้น Database ที่คนเข้าเป็นช่วงๆ เยอะ มากๆ ครับ ช่วย Database ได้เยอะเลย

ถ้าไม่เข้าใจสงสัยอะไร มาคุยกันต่อได้นะครับที่เพจ I-Makeweb ติดปัญหาอะไรก็มาคุยกันได้นะครับ

 

หมดแล้วเหรอ ?

จริงๆ  มันมีท่าเพิ่มอีกนะครับ สามารถเอามาทำ Master / Slave ได้เลย ก็จะตัดปัญหา เรื่องข้อมูลหายได้ ถ้าเราไม่ไป Restart มันเองอะนะ

 

สุดท้าย 

ที่ผมมาร์กๆ ไว้ว่า ง่ายๆ ครับ  จากที่ผมเคยแนะนำคนใช้มา ผมไม่อยากจะใช้คำว่ายาก ไม่ได้ ทำไมได้ ทำไม่ได้หรอก เยอะ ไม่เอา ผมไม่ชอบพูดประโยคพวกนี้ครับ อย่างมากก็แค่ มันเยอะนะ แต่มันทำได้ ลำบากนิดนะ งงหน่อยๆ อะไรแบบนี้ แต่คำที่ผมชอบใช้มากที่สุด คือคำว่ามันง่าย ครับ เพราะผมเชื่อว่าทุกคนทำได้ แค่เราไม่รู้ แต่ถ้าเราเข้าใจ มันง่ายๆ จริงๆ มันน่าจะทำให้คนอ่าน / ฟัง คิดว่าอยากเรียนรู้ต่อไปครับ ผมคาดหวังว่าบทความนี้จะมีประโยชน์ ถ้าชอบฝาก แชร์ด้วยนะครับ ขอบคุณมากครับ

 
Loading...