Redis และ Memcached มันดียังไง?

Redis และ Memcached มันดียังไง?

## Redis และ Memcached มันดียังไง? ##
คำเตือน: ไถผ่านฟีดนี้คุณอาจไม่เจอะโพสนี้อีกเลย!

เพราะโพสใหม่ ๆ มาทุกวัน (แนะนำให้กดแชร์เก็บไว้ครับ)
ไม่พูดพล่ามทำเพลง…ไปจวดดกันดีกว่าคร้าบ

Redis และ Memcached เป็นระบบจัดเก็บข้อมูลในหน่วยความจำ (in-memory) ก็คือเก็บข้อมูลใน RAM ในแหละครับ

ส่วนจะจัดเก็บข้อมูลประเภทไหน
เดี๋ยวเราไปลุยกันเลยยยย…

Memcached เป็นซอฟต์แวร์โอเพนซอร์ซระบบแคช
เก็บข้อมูลลงหน่วยความจำ (RAM)
ส่วนเจ้า Redis เป็นซอฟต์แวร์โอเพนซอร์ซระบบแคช

อย่างที่บอกไปมันเก็บข้อมูลลงหน่วยความจำ (RAM)
โดยข้อมูลที่เก็บจะเป็น Key Value (นึกภาพ NoSQL)

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

ว่าแต่ Redis และ Memcached มันดียังไง?

เก็บแล้วข้อมูลหาย 55+++++
มันเน้นเร็ว ไปเร็วมาเร็ว

ตอบโจทย์การเก็บข้อมูลที่เราใช้บ่อย ๆ นั้นเองครับ
(แต่มันสามารถคอนฟิกระบุพาทเก็บคงดิกส์ได้)

อีกอย่างหาก RAM เต็ม
ที่เป็นหัวใจสำคัญของประสิทธิภาพ
ก็จบเช่นกัน 😄

ดังนั้นเซิร์ฟเวอร์ต้องการ RAM ขนาดใหญ่
แอดมินแนะนำมากกว่า 4GB ขึ้นไป
และ Memcached ไม่รองรับการทำงานแบบกระจายหลาย ๆ โหนด (node) Redis รองรับการทำแคชชิ่งเก็บหลาย ๆ ชั้น ที่มีประสิทธิภาพสูง เพื่อขยายความจุของหน่วยความจำ (RAM) ไปยังเครื่องอื่น ๆ บน Redis Cluster (ปัจจุบันสนับสนุนโหนดสูงสุด 4,096 โหนด)

คราวนี้เราลองมาเปรียบเทียบคุณสมบัติเจ้า Redis และ Memcached กันมันดียังไง? #เก็บแล้วข้อมูลหาย 555+++

Salvatore Sanfilippo ผู้พัมนา Redis
ได้แชร์ประเด็นการเปรียบเทียบระหว่าง
Redis และ Memcached ไว้น่าสนใจดังนี้…

[1.] การเปรียบเทียบประสิทธิภาพการใช้หน่วยความจำ

Memcached กินแรมพอประมาณ
สำหรับการจัดเก็บคีย์
แต่ Redis กินแรมอย่างเต็มกำลัง
ใช้หน่วยความจำสูงกว่า Memcached
เนื่องจากมีการบีบอัดก่อนยัดเก็บลงแรม (compression mode)

ดังนั้น Redis จึงเป็นตัวเลือกที่ดีครับหากเปรียบเทียบประสิทธิภาพการใช้หน่วยความจำ

[2.] การเปรียบเทียบประสิทธิภาพ

Redis ทำงานบน single cores คือใช้คอร์เดียว
ในขณะที่ Memcached ใช้หลายคอร์ (multiple cores)

ดังนั้นโดยเฉลี่ยแล้ว Redis
มีประสิทธิภาพสูงกว่า Memcached ครับ
ในการจัดเก็บข้อมูลขนาดเล็ก
แต่หากวัดในแง่ของการจัดเก็บข้อมูลขนาดใหญ่ 100k
หรือสูงกว่า Memcached มีประสิทธิภาพดีกว่า Redis ครับ

[3.] ประเภทข้อมูลที่รองรับ

Redis และ Memcached
สนับสนุนประเภทข้อมูลลงแรกที่แตกต่าง

Memcached รองรับเฉพาะการบันทึกข้อมูล
ของโครงสร้างคีย์แบบง่าย (simple key-value structure)

Redis จะเก็บข้อมูลโดยระบุว่า key
ชื่อนี้ จะเก็บข้อมูลอะไรบ้าง?
ซึ่งตัวข้อมูลที่เก็บจะต้องเป็น String, Set, Hash
เป็นต้นอ่าครับ (หลัก ๆ ก็เป็น String)

[4.] การนำไปใช้งาน (Redis)

ใช้ทำ Full web-page cache
หรือ Session Storage ครับ

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

ครั้งถัดไปหากทุกครั้งที่ข้อมูลเดิมถูกเรียก
เราก็รับข้อมูลได้เลยทันที
เลยไม่ต้องไปคิวรีหาใหม่ให้เสียเวลา
ตัวอย่าง เช่น
คุณเลยเข้าเว็บไซต์ abc . com ใช้เวลา 10 วินาที
อาจจะทำให้เวลาลดลงมาเหลือ 2-3 วินาที ครับ

ดังนั้นทำการ Caching ด้วย Redis
หรือ Memcached ก็เพื่อเพิ่มความเร็วให้กับเว็บไซต์ของเราครับ

(แต่เรื่องของ Caching มันมีหลาย Level อะสิครับ
ตั้งแต่ระดับไคล์เอ็นท์ (mobile & desktop) เก็บบน Web browser หรือ Caching ผ่าน API เซิร์ฟเวอร์ แต่ในโพสนี้พูดซอฟต์แวร์ทำ Caching ฝั่ง Server ครับ)

และ Redis มันรองรับการติดตั้งบน Windows, Mac OS ด้วย Homebrew และ Linux

ตัวอย่าง การใช้ Redis
เรามาเริ่มด้วยการไหว้ครู 😄
ด้วย value = hello world

การเก็บค่า ใช้คำสั่ง SET <NAME> <VALUE>
เช่น SET name “hello world”

วิธีดึงข้อมูลจาก key
ที่เราบันทึกไว้ด้วยคำสั่ง GET <NAME>

เช่น

GET name
ผลลัพธ์ที่แสดง
“hello world”

การนำไปใช้งานจริง
เช่น ทำ Caching ให้กับเว็บไซต์ WordPress

Flow การทำงานจะประมาณนี้…

1. เมื่อผู้ใช้ HTTP request เข้ามา
มันเช็คก่อนว่ามี key เก็บไว้ใน Redis มั้ย?

2. ถ้ามี ก็ให้ return ค่านั้นกลับไปเลย
(ไม่ต้อง query หรือ fetch ค่า)

3. แล้วถ้าไม่มีล่ะ ก็ให้ไปดึงข้อมูล
ตามปกติครับ เมื่อได้ response
ก็เก็บค่าลง Redis ด้วย key ที่กำหนด เป็นอันเรียบร้อย

ลูปก็ประมาณนี้ครับ ^^
ใครอ่านมาถึงตรงนี้
ช่วยกันแชร์แบ่งปันไปให้เพื่อน ๆ
ของเราได้อ่านด้วยนะครับ
สำหรับความรู้พื้นฐานประเด็น
ข้อแตกต่างระหว่าง Redis และ Memcached ครับ

แน่นอนปัจจุบันทำการ Caching
เป็นพื้นฐานไปแล้วครับ 555+++ (หรือเปล่าไม่รู้)
ลองดูว่า Web hosting เจ้าไหนไม่มีระบบ Caching สิ

ว่าที่ลูกค้าหายทันที ^^

สุดท้ายโพสนี้แอดมินหวังว่ามันจะมีประโยชน์กับผู้อ่าน
และคนที่สนใจทำระะบบ caching ด้วย Redis/Memcached กันนะคร้าบ

อย่าลืม!!!!
ช่วยกันแชร์แบ่งปันไปให้ถึงเพื่อน ๆ ของเราได้อ่านด้วยนะครับ

อ่านเลิน ๆ แบบนี้ ให้กำลังใจแอดง่าย ๆ
ใครอ่านจบพิมพ์ #อ่านจบ

ส่วนผู้ที่ไถลงมาบรรทัดสุดท้ายพิมพ์
#ไถอ่านจบ 555+++

Source:
– Redis
////redis.io/

– Memcached
////memcached.org/

– Redis interview with Salvatore Sanfilippo
http://www.odbms.org/blog/2019/11/on-redis-interview-with-salvatore-sanfilippo/

#SUSEMAN #MEMCACHED #REDIS

Leave a Reply

Scroll to top
X