🗄️ Database

ทำความรู้จัก Redis คืออะไร? พร้อมวิธีใช้งานเบื้องต้นสำหรับมือใหม่

10 นาที 21 views บันทึกเป็น PDF
ทำความรู้จัก Redis คืออะไร? พร้อมวิธีใช้งานเบื้องต้นสำหรับมือใหม่

อยากให้เว็บโหลดเร็วขึ้นต้องรู้จัก Redis! มาเรียนรู้การทำ Caching (การพักข้อมูล) ด้วย Redis ผ่าน Docker แบบเข้าใจง่าย มือใหม่หัดเขียนโค้ดอ่านแล้วทำตามได้เลย

Redis คืออะไรและทำไมต้องรู้จัก

เวลาเราสร้างเว็บหรือแอปพลิเคชัน เรามักเก็บข้อมูลไว้ในฐานข้อมูลหลัก เช่น MySQL หรือ PostgreSQL ซึ่งเปรียบเสมือนตู้เก็บเอกสารขนาดใหญ่ที่เก็บทุกอย่างไว้เป็นระเบียบ แต่ปัญหาคือเวลาเราต้องการดึงข้อมูลออกมาบ่อยๆ ตู้เก็บเอกสารนี้จะทำงานช้าเพราะต้องค้นหาผ่านกระดาษจำนวนมาก Redis (Remote Dictionary Server - ระบบเก็บข้อมูลในหน่วยความจำที่ทำงานได้รวดเร็วมาก) จึงเข้ามาแก้ปัญหานี้โดยการทำหน้าที่เป็นพื้นที่พักข้อมูลชั่วคราวที่เข้าถึงได้ทันที

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

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

การทำงานที่แตกต่างของ Redis

ความลับที่ทำให้ Redis ทำงานได้เร็วมากคือมันเก็บข้อมูลไว้ใน RAM (หน่วยความจำชั่วคราวของคอมพิวเตอร์ที่อ่านเขียนข้อมูลได้เร็วสูง) แทนที่จะเก็บลงในฮาร์ดดิสก์เหมือนฐานข้อมูลปกติ การอ่านข้อมูลจาก RAM นั้นเร็วกว่าการอ่านจากฮาร์ดดิสก์หลายเท่าตัว ทำให้มันกลายเป็นเครื่องมือยอดนิยมสำหรับการทำ Caching (การเก็บข้อมูลที่เรียกใช้บ่อยไว้ในที่ที่ดึงมาใช้งานได้เร็ว) เพื่อลดภาระของฐานข้อมูลหลัก

อีกหนึ่งจุดเด่นคือ Redis เก็บข้อมูลแบบ Key-Value (รูปแบบการเก็บข้อมูลโดยมีชื่อเรียกเฉพาะหรือคีย์คู่กับค่าของข้อมูล) เหมือนกับการที่เราตั้งชื่อให้กล่องแต่ละใบแล้วใส่ของไว้ข้างใน เวลาจะหาของก็แค่เรียกชื่อกล่องนั้นออกมา วิธีนี้ต่างจากฐานข้อมูลแบบตารางที่ต้องเขียนคำสั่งซับซ้อนเพื่อหาข้อมูล ทำให้การเขียนโค้ดเพื่อดึงข้อมูลจาก Redis ทำได้ง่ายและสั้นมาก

ข้อควรระวังคือเนื่องจาก Redis เก็บข้อมูลใน RAM หากไฟดับหรือปิดเครื่อง ข้อมูลที่ไม่ได้บันทึกไว้ในฮาร์ดดิสก์อาจหายไปได้ ดังนั้นเราจึงไม่นิยมใช้ Redis เก็บข้อมูลสำคัญถาวร เช่น ข้อมูลบัญชีธนาคารหรือรหัสผ่าน แต่จะใช้เก็บข้อมูลที่ อนุญาตให้หายได้ หรือข้อมูลที่สามารถดึงใหม่จากฐานข้อมูลหลักได้ตลอดเวลา เช่น รายการสินค้าที่คนดูบ่อยๆ หรือข้อมูล Session (ข้อมูลการล็อกอินของผู้ใช้)

ติดตั้งและเริ่มต้นใช้งานเบื้องต้น

การติดตั้ง Redis ในปัจจุบันทำได้ง่ายมากผ่าน Docker (เครื่องมือสำหรับจำลองสภาพแวดล้อมในการรันโปรแกรม) ซึ่งช่วยให้เราไม่ต้องลงโปรแกรมให้รกเครื่องคอมพิวเตอร์ คุณแค่สั่งรันคำสั่งเพียงไม่กี่บรรทัดก็ได้ Redis มาใช้งานในเครื่องแล้ว วิธีนี้เป็นมาตรฐานที่โปรแกรมเมอร์ทั่วโลกใช้ในการทดสอบโปรเจกต์ก่อนนำไปใช้งานจริง

เมื่อติดตั้งเสร็จแล้ว คุณสามารถเข้าถึง Redis ผ่านหน้าจอ Terminal (หน้าจอพิมพ์คำสั่งสั่งงานคอมพิวเตอร์) เพื่อทดลองสั่งงานได้ทันที คำสั่งพื้นฐานที่ควรรู้คือการตั้งค่าข้อมูลและการดึงข้อมูลออกมาใช้ ซึ่งจะช่วยให้คุณเห็นภาพว่าข้อมูลถูกจัดเก็บและเรียกใช้อย่างไรในหน่วยความจำของเครื่อง

  1. ติดตั้ง Redis ผ่าน Docker ด้วยคำสั่ง docker run --name my-redis -p 6379:6379 -d redis
  2. เข้าใช้งาน Redis CLI (เครื่องมือสั่งงาน Redis) ด้วยคำสั่ง docker exec -it my-redis redis-cli
  3. พิมพ์คำสั่ง SET user:1 "Somchai" เพื่อเก็บชื่อลงไป
  4. พิมพ์คำสั่ง GET user:1 เพื่อดึงชื่อนั้นออกมาดู
# คำสั่งตั้งค่าข้อมูล
SET name "Somchai"

# คำสั่งดึงข้อมูล
GET name

อธิบายโค้ด: บรรทัดแรก SET คือการบอกให้ Redis สร้างคีย์ชื่อ name แล้วเก็บค่า "Somchai" ไว้ บรรทัดที่สอง GET คือการบอกให้ไปดึงค่าที่อยู่ในคีย์ชื่อ name กลับมา ผลลัพธ์ที่ควรเห็นในหน้าจอคือข้อความ "Somchai" ซึ่งแสดงว่า Redis เก็บและคืนข้อมูลให้เราได้ถูกต้อง

โครงสร้างข้อมูลที่ Redis รองรับ

Redis ไม่ได้เก็บแค่ข้อความธรรมดา แต่ยังรองรับโครงสร้างข้อมูลที่หลากหลาย เช่น List (รายการข้อมูลที่เรียงต่อกัน) หรือ Hash (กลุ่มของข้อมูลย่อยที่อยู่ภายใต้ชื่อเดียว) ซึ่งช่วยให้เราจัดการข้อมูลที่ซับซ้อนได้ง่ายขึ้นมาก การเลือกใช้โครงสร้างข้อมูลให้เหมาะสมกับงานจะช่วยให้แอปของคุณทำงานได้อย่างมีประสิทธิภาพและประหยัดทรัพยากรของเครื่อง

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

จุดที่มือใหม่มักพลาดคือการพยายามยัดเยียดทุกอย่างลงใน String (ข้อความธรรมดา) จนทำให้จัดการข้อมูลลำบากเมื่อโปรเจกต์ใหญ่ขึ้น หากคุณมีข้อมูลที่เกี่ยวข้องกันเป็นกลุ่ม ให้เลือกใช้ Hash แทน และถ้าต้องการเก็บลำดับของข้อมูล ให้เลือกใช้ List หรือ Set (ชุดของข้อมูลที่ไม่ซ้ำกัน) แล้วคุณจะพบว่าการเขียนโค้ดจัดการข้อมูลนั้นง่ายและสนุกขึ้นเยอะเลย

# เก็บข้อมูลแบบ Hash
HSET user:101 name "Somchai" email "somchai@email.com"

# ดึงข้อมูลมาเฉพาะชื่อ
HGET user:101 name

อธิบายโค้ด: HSET ใช้สำหรับเก็บข้อมูลแบบกลุ่มภายใต้คีย์ user:101 โดยมีฟิลด์ย่อยคือ name และ email ส่วน HGET คือการเจาะจงดึงเฉพาะค่าของ name ออกมา ผลลัพธ์ที่ควรเห็นคือ "Somchai" ซึ่งช่วยให้เราเข้าถึงข้อมูลเฉพาะจุดได้โดยไม่ต้องดึงข้อมูลทั้งหมดออกมา

การนำไปใช้ในงานจริงของโปรแกรมเมอร์

ในชีวิตการทำงานจริงของโปรแกรมเมอร์ เรามักใช้ Redis เป็น Cache Layer (ชั้นข้อมูลที่คั่นกลางระหว่างหน้าเว็บกับฐานข้อมูลหลัก) เพื่อลดการทำงานของฐานข้อมูลหลัก ตัวอย่างที่เห็นได้ชัดคือการทำระบบนับยอดไลก์หรือยอดวิวของบทความ ถ้าเราต้องเขียนลงฐานข้อมูลทุกครั้งที่มีคนกดไลก์ ฐานข้อมูลจะทำงานหนักมากจนล่มได้ เราจึงใช้ Redis เก็บตัวเลขนี้ไว้ก่อนแล้วค่อยอัปเดตลงฐานข้อมูลจริงในภายหลัง

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

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

สรุปและแนวทางการฝึกฝน

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

สำหรับการฝึกฝนต่อจากนี้ ผมแนะนำให้คุณลองสร้างโปรเจกต์เล็กๆ เช่น เว็บไซต์แสดงสภาพอากาศที่ดึงข้อมูลจาก API มาเก็บไว้ใน Redis เป็นเวลา 10 นาที เพื่อไม่ให้ต้องเรียก API บ่อยเกินไป หรือลองทำระบบนับจำนวนผู้เข้าชมเว็บไซต์ด้วยตัวเองดูครับ การได้ลงมือทำจริงจะทำให้คุณเห็นภาพชัดเจนว่า Redis ช่วยแก้ปัญหาคอขวดในระบบได้อย่างไร

สุดท้ายนี้ อย่าลืมจดบันทึกสิ่งที่คุณเรียนรู้ลงใน GitHub (เว็บไซต์ที่เก็บโค้ดและประวัติการพัฒนาโปรเจกต์) หรือเขียนบล็อกสรุปสั้นๆ เพราะการอธิบายให้คนอื่นฟังคือวิธีเรียนรู้ที่ดีที่สุด การมี Redis อยู่ในทักษะของคุณจะทำให้คุณเป็นโปรแกรมเมอร์ที่มองเห็นภาพรวมของระบบได้ดีขึ้น และพร้อมสำหรับการทำงานในทีมพัฒนาซอฟต์แวร์ระดับมืออาชีพแน่นอนครับ

แชร์บทความ

Facebook X LINE

บทความที่เกี่ยวข้อง

เลือก Database อย่างไรให้เหมาะกับโปรเจกต์แรกของคุณ
Database

เลือก Database อย่างไรให้เหมาะกับโปรเจกต์แรกของคุณ

มือใหม่หัดเขียนโปรแกรมต้องรู้! วิธีเลือกฐานข้อมูล (Database) ให้เหมาะกับงาน ทั้งแบบ Relational และ NoSQL เพื่อให้โปรเจกต์ของคุณรองรับการใช้งานได้จริง

1 month ago 8 นาที
17 views
NoSQL Database (ฐานข้อมูลแบบไม่สัมพันธ์): ทางเลือกใหม่ของนักพัฒนา
Database

NoSQL Database (ฐานข้อมูลแบบไม่สัมพันธ์): ทางเลือกใหม่ของนักพัฒนา

รู้จัก NoSQL Database ฐานข้อมูลแบบไม่สัมพันธ์ ที่โปรแกรมเมอร์ยุคใหม่ควรรู้! เรียนรู้ประเภทและข้อดีที่แตกต่างจาก SQL เพื่อจัดการข้อมูลมหาศาลได้อย่างยืดหยุ่นและรวดเร็ว

1 month ago 13 นาที
23 views
Relational Database (ฐานข้อมูลเชิงสัมพันธ์): คู่มือฉบับโปรแกรมเมอร์มือใหม่
Database

Relational Database (ฐานข้อมูลเชิงสัมพันธ์): คู่มือฉบับโปรแกรมเมอร์มือใหม่

เรียนรู้ Relational Database คืออะไร ทำไมโปรแกรมเมอร์ต้องรู้ และส่วนประกอบสำคัญอย่าง Table, Column, Key พร้อมภาษา SQL ที่ต้องใช้ เพื่อจัดการข้อมูลแอปพลิเคชันอย่างมืออาชีพ

1 month ago 10 นาที
23 views