พอเว็บเริ่มมีคนเข้ามากขึ้น คำแนะนำที่ได้ยินบ่อยที่สุดคือ "ลองใส่ Redis สิ" ราวกับว่ามันเป็นสวิตช์ที่กดแล้วเว็บเร็วขึ้นทันที ซึ่งไม่จริงเสมอไป และการใส่มันผิดที่ก็ทำได้แค่เพิ่มของให้ดูแลอีกตัวโดยไม่ได้อะไรกลับมา
บทความนี้อธิบายว่า Redis คืออะไรจริง ๆ ทำไมมันถึงเร็ว และที่สำคัญกว่าคือมันแลกมากับอะไร ใช้ทำอะไรได้บ้าง ต่างจาก Memcached ตรงไหน ใส่แล้วเว็บเร็วขึ้นจริงไหม ต้องเผื่อสเปกเท่าไหร่ และเรื่องความปลอดภัยที่พลาดแล้วเสียหายจริงมาแล้วหลายราย
Redis คืออะไร
Redis คือที่เก็บข้อมูลแบบคีย์-ค่า (key-value) ที่เก็บข้อมูลทั้งหมดไว้ในหน่วยความจำหลักของเครื่อง หรือที่เรียกกันว่าแรม แทนที่จะเก็บบนดิสก์เหมือนฐานข้อมูลทั่วไป การอ่านหรือเขียนข้อมูลหนึ่งชิ้นจึงเป็นแค่การหยิบของจากแรม ซึ่งเร็วกว่าการวิ่งไปหาข้อมูลบนดิสก์อย่างมีนัยสำคัญ
วิธีใช้งานพื้นฐานง่ายมาก คุณตั้งชื่อคีย์ขึ้นมาหนึ่งชื่อ แล้วเก็บค่าไว้กับคีย์นั้น เวลาจะเอากลับมาก็เรียกด้วยชื่อคีย์เดิม เหมือนตู้ล็อกเกอร์ที่คุณจำหมายเลขล็อกเกอร์ได้ก็เปิดเอาของออกมาได้ทันที ไม่ต้องค้นทีละช่อง
แต่ Redis ไม่ได้เก็บได้แค่ข้อความธรรมดา มันมีโครงสร้างข้อมูลในตัวหลายแบบ ทั้งรายการ (list), เซต, ตารางแฮช และเซตแบบเรียงลำดับ (sorted set) ซึ่งเป็นเหตุผลที่คนเอามันไปทำงานได้หลากหลายกว่าคำว่า "แคช" อย่างเดียว เช่นทำคิวงานหรือทำตารางอันดับก็ได้จากโครงสร้างที่มีอยู่แล้ว
ทำไมถึงเร็ว และแลกมากับอะไร
เหตุผลหลักที่ Redis เร็วมีสองข้อ ข้อแรกคือข้อมูลอยู่ในแรม ซึ่งเข้าถึงได้เร็วกว่าดิสก์มาก ข้อสองคือการออกแบบที่จงใจให้เรียบง่าย คำสั่งส่วนใหญ่ประมวลผลด้วยเธรดหลักเธรดเดียวเรียงกันไป จึงไม่มีต้นทุนของการล็อกและการสลับงานที่ซับซ้อน (เวอร์ชันใหม่แยกงานรับส่งข้อมูลผ่านเครือข่ายไปหลายเธรดได้ แต่การประมวลผลคำสั่งยังคงแนวคิดเดิม)
ทีนี้มาถึงส่วนที่ต้องพูดให้ตรง เพราะความเร็วนี้ไม่ได้ฟรี ข้อแลกเปลี่ยนข้อแรกคือ ข้อมูลอยู่ในแรมแปลว่าแรมหมดเมื่อไหร่คือปัญหาทันที ถ้าคุณไม่ได้กำหนดเพดานหน่วยความจำไว้ Redis จะเก็บข้อมูลเพิ่มไปเรื่อย ๆ จนแรมของเครื่องเต็ม แล้วระบบปฏิบัติการจะเริ่มปิดกระบวนการที่กินแรมมากที่สุดทิ้ง ซึ่งก็คือ Redis เองหรือแย่กว่านั้นคือฐานข้อมูลหลักของคุณ
ข้อแลกเปลี่ยนข้อที่สองสำคัญกว่า คือถ้าไม่ตั้งค่าให้เขียนข้อมูลลงดิสก์ ข้อมูลทั้งหมดจะหายเมื่อรีสตาร์ต Redis มีกลไกเขียนลงดิสก์ให้เลือกสองแบบ แบบแรกคือบันทึกภาพรวมของข้อมูลเป็นช่วง ๆ (snapshot) ซึ่งค่าเริ่มต้นมาตรฐานเปิดไว้อยู่ แบบที่สองคือบันทึกทุกคำสั่งที่เขียนต่อท้ายไฟล์ (append-only) ซึ่งค่าเริ่มต้นปิดอยู่ ผลคือถ้าใช้แค่ค่าเริ่มต้นแล้วเครื่องดับ ข้อมูลที่เขียนหลังการบันทึกครั้งล่าสุดจะหายไป
พูดให้ชัดกว่านั้น: ถ้าตั้งค่าปิดการเขียนลงดิสก์ไว้ (ซึ่งคอนเทนเนอร์สำเร็จรูปบางตัวตั้งมาแบบนั้น) การรีสตาร์ตเครื่องหรือรีสตาร์ตบริการเพียงครั้งเดียวก็เท่ากับข้อมูลใน Redis หายทั้งหมด ถ้าใช้มันเป็นแคชล้วน เรื่องนี้ไม่ใช่ปัญหาเพราะสร้างใหม่จากฐานข้อมูลได้ แต่ถ้าเผลอเอาไปเก็บของที่หายไม่ได้ นี่คือปัญหาใหญ่
Redis ใช้ทำอะไรบ้าง
คนส่วนใหญ่รู้จัก Redis ในฐานะแคช แต่จริง ๆ มันถูกใช้กว้างกว่านั้นมาก เพราะโครงสร้างข้อมูลที่มีมาให้ทำให้งานหลายอย่างเขียนได้ในไม่กี่คำสั่ง ตารางนี้คืองานที่พบบ่อยที่สุดในระบบจริง
| งาน | ทำอะไร | ทำไมถึงเหมาะกับ Redis |
|---|---|---|
| Cache | เก็บผลลัพธ์ที่คำนวณหรือดึงจากฐานข้อมูลแล้วไว้ชั่วคราว คำขอเดิมครั้งถัดไปตอบจากแรมได้เลย | ตั้งเวลาหมดอายุต่อคีย์ได้ในตัว และข้อมูลหายก็สร้างใหม่จากฐานข้อมูลได้เสมอ |
| Session ผู้ใช้ | เก็บสถานะการเข้าสู่ระบบของผู้ใช้แต่ละคน เพื่อไม่ต้องตรวจสอบใหม่ทุกคำขอ | อ่านบ่อยมาก ข้อมูลชิ้นเล็ก และมีวันหมดอายุตามธรรมชาติอยู่แล้ว |
| คิวงาน | พักงานที่ไม่ต้องทำทันที เช่นส่งอีเมลหรือย่อรูป ไว้ให้ตัวประมวลผลเบื้องหลังมาหยิบไปทำ | มีโครงสร้างรายการที่ใส่ท้ายหยิบหัวได้โดยตรง ไม่ต้องเขียนกลไกเอง |
| Rate limit | นับจำนวนคำขอต่อผู้ใช้หรือต่อ IP ในช่วงเวลาหนึ่ง เพื่อจำกัดการยิงซ้ำ | เพิ่มค่าตัวนับและตั้งเวลาหมดอายุได้ในคำสั่งเดียว เร็วพอที่จะทำทุกคำขอ |
| Leaderboard | จัดอันดับคะแนนผู้เล่นหรือรายการยอดนิยม แล้วดึงอันดับต้น ๆ ออกมาแสดง | เซตแบบเรียงลำดับจัดอันดับให้อัตโนมัติ ไม่ต้องเรียงใหม่ทุกครั้งที่มีคะแนนเข้า |
| ล็อกข้ามกระบวนการ | กันไม่ให้งานเดียวกันถูกทำซ้ำพร้อมกันจากหลายเครื่องหรือหลายกระบวนการ | ทุกตัวมองเห็นค่าเดียวกันจากศูนย์กลาง และตั้งอายุของล็อกได้ |
Redis ไม่ใช่ฐานข้อมูลหลัก
ประเด็นนี้ต้องพูดให้ชัด เพราะเป็นความเข้าใจผิดที่ทำให้ระบบพังจริง โดยทั่วไป Redis ถูกใช้ "คู่กับ" ฐานข้อมูลจริงอย่าง MySQL หรือ PostgreSQL ไม่ใช่ใช้แทน ข้อมูลที่เป็นความจริงของระบบ เช่นบัญชีผู้ใช้ คำสั่งซื้อ หรือรายการสินค้า ยังต้องอยู่ในฐานข้อมูลหลักที่เขียนลงดิสก์ทุกครั้งที่มีธุรกรรม
รูปแบบการทำงานปกติเป็นแบบนี้: เมื่อมีคำขอเข้ามา แอปจะถามหาข้อมูลจาก Redis ก่อน ถ้ามีก็ตอบกลับได้ทันที ถ้าไม่มีค่อยไปดึงจากฐานข้อมูลหลัก แล้วเก็บสำเนาไว้ใน Redis พร้อมกำหนดวันหมดอายุ คำขอครั้งถัดไปที่ถามหาข้อมูลเดิมจึงตอบจากแรมได้เลย เหตุผลที่วางลำดับแบบนี้ก็เพราะแม้ Redis จะหายไปทั้งก้อน ระบบก็ยังทำงานต่อได้ แค่ช้าลงเท่านั้น
- ฐานข้อมูลหลักคือแหล่งความจริง — ข้อมูลใน Redis ถือเป็นสำเนาที่ทิ้งได้เสมอ
- อย่าเขียนข้อมูลสำคัญลง Redis อย่างเดียวโดยไม่ผ่านฐานข้อมูล เพราะไม่มีการรับประกันความคงทนระดับเดียวกัน
- Redis ไม่มีการเชื่อมตาราง ไม่มีการค้นหาที่ซับซ้อนแบบ SQL การหาข้อมูลตามเงื่อนไขหลายชั้นไม่ใช่งานของมัน
- ระวังข้อมูลใน Redis ไม่ตรงกับฐานข้อมูล — เมื่อแก้ข้อมูลในฐานข้อมูลแล้ว ต้องลบหรืออัปเดตคีย์ที่เกี่ยวข้องด้วย ไม่งั้นผู้ใช้จะเห็นข้อมูลเก่า
- ตั้งวันหมดอายุให้คีย์เสมอเมื่อใช้เป็นแคช เพื่อให้ข้อมูลเก่าหลุดออกไปเองแม้จะลืมลบ
- ออกแบบให้ระบบยังทำงานได้แม้ Redis ล่ม — ถ้าเชื่อมต่อไม่ได้ควรตกไปอ่านฐานข้อมูลหลักแทน ไม่ใช่ขึ้นหน้าเออเรอร์
Redis กับ Memcached ต่างกันยังไง
Memcached คืออีกตัวเลือกที่ทำงานคล้ายกัน คือเก็บข้อมูลคีย์-ค่าไว้ในแรมเพื่อใช้เป็นแคช เกิดมาก่อนและออกแบบมาให้ทำอย่างเดียวคือแคช จึงเรียบง่ายมาก ส่วน Redis มีความสามารถกว้างกว่า แลกกับสิ่งที่ต้องตั้งค่าและดูแลมากกว่านิดหน่อย
ในทางปฏิบัติ ถ้าคุณต้องการแค่แคชคู่คีย์-ค่าล้วน ๆ ทั้งสองตัวทำงานได้ดีพอกัน แต่ถ้ามีโอกาสจะใช้ทำคิวงาน จัดอันดับ หรืออยากให้ข้อมูลอยู่รอดข้ามการรีสตาร์ต Redis จะครอบคลุมกว่า ซึ่งเป็นเหตุผลที่โครงการใหม่ ๆ ส่วนใหญ่เลือก Redis เป็นค่าตั้งต้น
| หัวข้อ | Redis | Memcached |
|---|---|---|
| ชนิดข้อมูล | ข้อความ รายการ เซต ตารางแฮช และเซตแบบเรียงลำดับ | คู่คีย์-ค่าแบบเรียบง่ายเป็นหลัก |
| เขียนลงดิสก์ | ทำได้ ทั้งแบบ snapshot และแบบบันทึกทุกคำสั่งต่อท้าย | ไม่มี ข้อมูลอยู่ในแรมล้วน หายเมื่อรีสตาร์ต |
| ทำสำเนา/สำรอง | มีการทำสำเนาไปเครื่องอื่นในตัว | ไม่มีในตัว ต้องอาศัยฝั่งแอปจัดการเอง |
| การใช้หลายคอร์ | ประมวลผลคำสั่งด้วยเธรดหลักเป็นหลัก | รองรับหลายเธรดมาตั้งแต่ต้น |
| ความสามารถเสริม | ระบบส่งข้อความ (pub/sub) สคริปต์ ธุรกรรม โครงสร้างสำหรับคิวและอันดับ | ไม่มี เน้นทำแคชอย่างเดียวให้ดีที่สุด |
| เหมาะกับ | งานหลากหลายกว่าแค่แคช และงานที่อยากให้ข้อมูลรอดข้ามการรีสตาร์ต | แคชล้วน ๆ ที่อยากได้ของเรียบง่าย ตั้งค่าน้อยที่สุด |
ใส่ Redis แล้วเว็บเร็วขึ้นจริงไหม
ตอบตรง ๆ ว่า ช่วยเมื่อคอขวดของคุณคือการอ่านข้อมูลชุดเดิมซ้ำ ๆ เท่านั้น ถ้าเว็บของคุณต้องคิวรีฐานข้อมูลชุดเดียวกันซ้ำหลายพันครั้งต่อนาทีเพื่อตอบคำขอที่ให้ผลเหมือนกัน การเก็บผลไว้ในแรมแล้วตอบจากตรงนั้นย่อมลดงานของฐานข้อมูลลงได้ชัดเจน นี่คือกรณีที่ Redis ทำงานได้ตรงจุด
แต่ถ้าคอขวดอยู่ที่อื่น Redis ไม่ได้ช่วยอะไรเลย และยังเพิ่มของให้ดูแลอีกหนึ่งตัว ที่พบบ่อยคือเว็บช้าเพราะรูปภาพใหญ่เกินไป เพราะสคริปต์ฝั่งหน้าเว็บเยอะเกินจำเป็น เพราะคิวรีฐานข้อมูลตัวเดียวเขียนไว้ไม่ดีจนกินเวลาหลายวินาที หรือเพราะเครื่องแรมเต็มจนระบบต้องสลับข้อมูลไปมากับดิสก์ ทั้งหมดนี้แก้ที่ต้นเหตุตรง ๆ ได้ผลกว่าการเพิ่ม Redis เข้าไป
วิธีตรวจสอบก่อนตัดสินใจคือดูให้เห็นก่อนว่าเวลาที่หายไปอยู่ตรงไหน เปิดเครื่องมือดูเวลาตอบสนองของแอป ดูว่าคำขอหนึ่งครั้งใช้เวลาไปกับอะไรมากที่สุด ถ้าเห็นชัดว่าเป็นการคิวรีฐานข้อมูลชุดเดิมซ้ำ ๆ ค่อยใส่แคช ถ้าไม่ใช่ ให้แก้ตรงที่มันช้าจริงก่อน
- ช่วยได้: หน้าที่ทุกคนเห็นเหมือนกันและเนื้อหาไม่เปลี่ยนบ่อย แต่ต้องคิวรีฐานข้อมูลใหม่ทุกครั้ง
- ช่วยได้: ข้อมูลที่ต้องอ่านทุกคำขอ เช่นสถานะการเข้าสู่ระบบหรือค่าตั้งค่าของเว็บ
- ช่วยได้: งานที่ทำให้ผู้ใช้ต้องรอ ทั้งที่ยกไปทำเบื้องหลังผ่านคิวได้
- ไม่ช่วย: เว็บช้าเพราะไฟล์ภาพหรือสคริปต์ฝั่งหน้าเว็บหนักเกินไป
- ไม่ช่วย: คิวรีตัวเดียวที่เขียนไว้ไม่ดีหรือขาดดัชนี ควรแก้คิวรีหรือเพิ่มดัชนีก่อน
- ไม่ช่วย: เครื่องแรมไม่พออยู่แล้ว — ใส่ Redis เข้าไปยิ่งแย่งแรมเพิ่ม
- ไม่ช่วย: ข้อมูลที่แต่ละคนเห็นไม่เหมือนกันและเปลี่ยนทุกครั้ง เพราะแคชแทบไม่เคยถูกใช้ซ้ำ
สเปกที่ควรเผื่อ
ตัว Redis เองแทบไม่กิน CPU สิ่งที่ต้องคิดคือแรม เพราะข้อมูลทั้งหมดอยู่ในนั้น หลักคิดง่าย ๆ คือประเมินขนาดข้อมูลที่จะเก็บ แล้วเผื่อไว้อีกส่วนหนึ่งสำหรับค่าใช้จ่ายภายในของตัวโปรแกรมและช่วงที่มันบันทึกข้อมูลลงดิสก์ และอย่าลืมว่าฐานข้อมูลหลักกับตัวเว็บก็กินแรมบนเครื่องเดียวกันอยู่แล้ว ตารางด้านล่างเทียบกับแพ็กเกจ VPS ของ Plusweb ทุกตัวมี 1 Public IPv4 ในตัว ตัวเลขในวงเล็บคือราคาต่อเดือนเมื่อชำระรายปี
| ลักษณะการใช้งาน | ข้อมูลใน Redis (ประมาณ) | แพ็กเกจที่พอเริ่มได้ | ราคา/เดือน (รายปี) |
|---|---|---|---|
| ทดลองใช้ หรือเก็บ session เว็บเล็ก ๆ | หลักสิบ MB | VPS-00 — 1 vCore / 1 GB / 15 GB | 150฿ (120฿) |
| เว็บขนาดกลาง ใช้แคชผลคิวรีร่วมกับฐานข้อมูลบนเครื่องเดียวกัน | ราว 100–300 MB | VPS-01 — 1 vCore / 3 GB / 30 GB | 250฿ (200฿) |
| เว็บที่คนเข้าสม่ำเสมอ มีทั้งแคช session และคิวงาน | ราว 300 MB–1 GB | VPS-02 — 2 vCores / 4 GB / 60 GB | 350฿ (280฿) |
| หลายบริการบนเครื่องเดียว หรือแคชชุดข้อมูลก้อนใหญ่ | 1–2 GB ขึ้นไป | VPS-03 — 4 vCores / 8 GB / 100 GB | 600฿ (480฿) |
ความปลอดภัย: เรื่องที่ห้ามพลาดเด็ดขาด
ข้อนี้สำคัญที่สุดในบทความ: ห้ามเปิดพอร์ตของ Redis ออกสู่อินเทอร์เน็ตโดยไม่มีรหัสผ่านเด็ดขาด พอร์ตมาตรฐานของมันคือ 6379 ซึ่งเป็นหมายเลขที่รู้กันทั่วโลก มีสคริปต์อัตโนมัติไล่สแกนหาเซิร์ฟเวอร์ที่เปิดพอร์ตนี้ทิ้งไว้ตลอดเวลา เครื่องที่เผลอเปิดไว้มักถูกเจอภายในเวลาไม่นานหลังขึ้นออนไลน์
ผลที่ตามมาไม่ใช่แค่ข้อมูลรั่ว เพราะคนที่เข้าถึง Redis ได้โดยไม่ต้องยืนยันตัวตนจะสั่งลบข้อมูลทั้งหมด เขียนข้อมูลปลอมเข้าไป หรือใช้ความสามารถบางอย่างของมันเป็นทางเข้าสู่ระบบต่อได้ นี่คือช่องทางที่ทำให้เซิร์ฟเวอร์ถูกยึดจริงมาแล้วนับไม่ถ้วน รายละเอียดเรื่องการปิดพอร์ตอ่านเพิ่มได้ที่ Firewall คืออะไร
- ให้ Redis ฟังเฉพาะภายในเครื่อง (127.0.0.1) ถ้าแอปที่ใช้งานอยู่บนเครื่องเดียวกัน ซึ่งเป็นกรณีส่วนใหญ่
- ตั้งรหัสผ่านให้ Redis เสมอ แม้จะเปิดเฉพาะภายในเครื่องก็ควรตั้งไว้เป็นชั้นป้องกันสำรอง
- ปิดพอร์ต 6379 ที่ไฟร์วอลล์ อย่าพึ่งการตั้งค่าในตัว Redis อย่างเดียว
- ถ้ารันด้วยคอนเทนเนอร์ ระวังการผูกพอร์ตออกมาที่ IP สาธารณะโดยไม่ตั้งใจ — ให้ผูกกับภายในเครื่องเท่านั้น
- ถ้าจำเป็นต้องให้เครื่องอื่นเชื่อมต่อจริง ๆ ให้ใช้เครือข่ายภายในหรือช่องทางที่เข้ารหัส ไม่ใช่เปิดพอร์ตออกอินเทอร์เน็ตตรง ๆ
- จำกัดสิทธิ์ของบัญชีที่แอปใช้เชื่อมต่อ ให้ใช้ได้เท่าที่จำเป็น ไม่ใช่สิทธิ์เต็มทุกคำสั่ง
- อัปเดตเวอร์ชันสม่ำเสมอ และอย่ารัน Redis ด้วยสิทธิ์ root โดยไม่จำเป็น
สรุป
Redis คือที่เก็บข้อมูลคีย์-ค่าที่วางข้อมูลไว้ในแรม จึงอ่านเขียนได้เร็วมาก เหมาะกับข้อมูลชิ้นเล็กที่ถูกเรียกซ้ำบ่อย ๆ อย่างแคช session คิวงาน การจำกัดอัตราคำขอ และตารางอันดับ แต่มันไม่ใช่ฐานข้อมูลหลัก และโดยทั่วไปใช้คู่กับ MySQL หรือฐานข้อมูลจริงตัวอื่นเสมอ
สิ่งที่ต้องจำให้ขึ้นใจมีสามข้อ: ข้อมูลอยู่ในแรม แรมหมดคือปัญหาจึงต้องตั้งเพดานไว้ · ถ้าไม่ตั้งค่าให้เขียนลงดิสก์ ข้อมูลหายเมื่อรีสตาร์ต · และห้ามเปิดพอร์ตออกอินเทอร์เน็ตโดยไม่มีรหัสผ่าน ส่วนคำถามว่าใส่แล้วเว็บเร็วขึ้นไหม คำตอบคือช่วยเมื่อคอขวดคือการอ่านข้อมูลซ้ำ ๆ เท่านั้น ถ้าคอขวดอยู่ที่อื่นก็ต้องแก้ที่ตรงนั้น
ในทางปฏิบัติ คนส่วนใหญ่ติดตั้ง Redis ด้วยคอนเทนเนอร์บนเครื่องเดียวกับแอป แล้วให้ Nginx อยู่หน้าสุดรับทราฟฟิกจากภายนอก ส่วน Redis อยู่ข้างในโดยไม่เปิดพอร์ตออกเลย ถ้ายังไม่คุ้นกับสองส่วนนี้ อ่าน Docker คืออะไร ประกอบ และถ้ายังไม่เคยมีเครื่องเป็นของตัวเอง เริ่มที่ VPS คืออะไร ก่อน เพราะการติดตั้ง Redis เองต้องมีสิทธิ์ root ซึ่งโฮสติ้งแบบแชร์ไม่เปิดให้
อยากลง Redis บนเครื่องของคุณเอง?
VPS ของ Plusweb ให้สิทธิ์ root เต็มและ Public IPv4 ในตัว ติดตั้ง Redis คู่กับฐานข้อมูลบนเครื่องเดียวได้ เริ่มต้น 120฿/เดือน (รายปี)
คำถามที่พบบ่อย
Redis คืออะไรแบบสั้นที่สุด?
Redis คือที่เก็บข้อมูลแบบคีย์-ค่าที่เก็บทุกอย่างไว้ในแรมของเครื่อง จึงอ่านและเขียนได้เร็วกว่าการไปหาข้อมูลบนดิสก์มาก ใช้งานโดยตั้งชื่อคีย์แล้วเก็บค่าไว้ เวลาจะเอากลับมาก็เรียกด้วยชื่อคีย์เดิม นิยมใช้เป็นแคช เก็บ session ทำคิวงาน และจำกัดอัตราคำขอ
รีสตาร์ตแล้วข้อมูลใน Redis หายไหม?
ขึ้นกับการตั้งค่า ถ้าไม่ได้เปิดการเขียนข้อมูลลงดิสก์ไว้เลย ข้อมูลจะหายทั้งหมดเมื่อรีสตาร์ต ถ้าใช้ค่าเริ่มต้นมาตรฐานที่บันทึกภาพรวมเป็นช่วง ๆ ข้อมูลที่เขียนหลังการบันทึกครั้งล่าสุดจะหายไป ถ้าต้องการให้หายน้อยที่สุดต้องเปิดโหมดบันทึกทุกคำสั่งต่อท้ายเพิ่ม ซึ่งค่าเริ่มต้นปิดอยู่
Redis ใช้แทน MySQL ได้ไหม?
โดยทั่วไปไม่ควร Redis ออกแบบมาเพื่อการเข้าถึงข้อมูลชิ้นเล็กด้วยคีย์ให้เร็วที่สุด ไม่มีการเชื่อมตารางและการค้นหาแบบซับซ้อนอย่าง SQL อีกทั้งข้อมูลอยู่ในแรมซึ่งมีข้อจำกัดเรื่องขนาดและความคงทน รูปแบบที่ถูกต้องคือให้ฐานข้อมูลหลักเป็นแหล่งความจริง แล้วใช้ Redis เก็บสำเนาที่ทิ้งได้ไว้ตอบคำขอที่ซ้ำ ๆ
Redis กับ Memcached เลือกอันไหนดี?
ถ้าต้องการแค่แคชคู่คีย์-ค่าเรียบง่ายที่สุด Memcached ก็เพียงพอและตั้งค่าน้อยกว่า แต่ถ้ามีโอกาสจะใช้ทำคิวงาน จัดอันดับ ทำสำเนาไปเครื่องอื่น หรืออยากให้ข้อมูลรอดข้ามการรีสตาร์ต Redis ครอบคลุมกว่าชัดเจน จึงเป็นเหตุผลที่โครงการใหม่ส่วนใหญ่เลือก Redis เป็นค่าตั้งต้น
ใส่ Redis แล้วเว็บจะเร็วขึ้นเลยไหม?
ไม่เสมอไป มันช่วยเมื่อคอขวดของคุณคือการอ่านข้อมูลชุดเดิมซ้ำ ๆ จากฐานข้อมูลเท่านั้น ถ้าเว็บช้าเพราะรูปภาพใหญ่ สคริปต์ฝั่งหน้าเว็บหนัก คิวรีเขียนไว้ไม่ดี หรือแรมของเครื่องไม่พออยู่แล้ว การใส่ Redis จะไม่ช่วยและยังเพิ่มของให้ดูแลอีกตัว ควรวัดก่อนว่าเวลาหายไปตรงไหนแล้วค่อยตัดสินใจ
รัน Redis บน VPS ต้องใช้แพ็กเกจไหน?
ให้ดูที่ขนาดข้อมูลที่จะเก็บในแรมเป็นหลัก เพราะตัว Redis เองแทบไม่กิน CPU ถ้าทดลองหรือเก็บ session เว็บเล็ก ๆ VPS-00 (1 vCore / 1 GB / 15 GB) ที่ 150฿ ต่อเดือนก็พอเริ่ม ถ้าใช้แคชร่วมกับฐานข้อมูลบนเครื่องเดียวกันแนะนำ VPS-01 (1 vCore / 3 GB / 30 GB) ขึ้นไป และถ้ามีหลายบริการพร้อมกันควรเป็น VPS-02 (2 vCores / 4 GB / 60 GB) หรือ VPS-03 (4 vCores / 8 GB / 100 GB)
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
MySQL คืออะไร? เข้าใจฐานข้อมูลยอดนิยมแบบไม่ต้องมีพื้นฐาน
MySQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่เว็บทั่วโลกใช้เก็บข้อมูลมากที่สุดตัวหนึ่ง อ่านให้เข้าใจว่ามันคืออะไร เก็บข้อมูลยังไง ต่างจาก MariaDB ตรงไหน และควรรันบนโฮสติ้งหรือบน VPS
อ่านต่อDocker คืออะไร? อธิบายแบบเห็นภาพ พร้อมวิธีใช้จริงบน VPS
Docker คือเครื่องมือที่ห่อแอปพร้อมทุกอย่างที่มันต้องใช้ไว้ในกล่องเดียว ทำให้รันที่ไหนก็ได้ผลเหมือนกัน อ่านให้เข้าใจศัพท์หลัก ความต่างจาก VM และเหตุผลที่คนเช่า VPS นิยมลง
อ่านต่อVPS คืออะไร? ใช้ทำอะไรได้บ้าง ฉบับเข้าใจง่าย
สรุปครบเรื่อง VPS — VPS server คืออะไร ทำงานยังไง Cloud VPS ต่างจาก VPS ทั่วไปตรงไหน ใช้ทำอะไรได้บ้าง เทียบกับ Shared Hosting และ Dedicated ใครควรใช้ และเริ่มต้นยังไงในปี 2026
อ่านต่อ