Redis คืออะไร
Redis คือ database แบบ noSQL เป็น database แบบ Key - Value ลักการทำงานของ Key - Value ก็คือ เอา key ไปค้น ว่าเก็บ value อะไรอยู่ ก็เอา value ออกมาใช้มี data structure แบบพิเศษ หลายอย่าง ไม่ว่าจะเป็น string, hashes, lists, sets, sorted sets ซึ่งแต่ละแบบมันมีโครงสร้าง การทำงาน และ feature ที่ให้เราหยิบมาใช้ได้แตกต่างกัน
โครงสร้างของ Redis
โครงสร้างการทำงานหลักของ redis นั้น จะทำงานบน ram เพื่อให้ได้ประสิทธิภาพ ที่ดีที่สุด แต่ว่าตัว redis เองสามารถตั้งค่า ให้เก็บลง Harddisk ตามเงื่อนไขที่เรากำหนดได้ เพื่อความถาวรของข้อมูลดังนั้นไม่ต้องกลัวว่า ไฟดับแล้วข้อมูลจะหายหมด เพราะเมื่อ start redis ขึ้นมาใหม่ มันก็จะอ่านข้อมูลจากที่เก็บลง harddisk ล่าสุดเอาไว้ขึ้นมาทำงานต่อได้เลย
redis สามารถทำ master slave replication ได้ง่าย เพียงแค่ตั้งค่าไม่กี่บรรทัดเท่านั้น และการ synce ข้อมูลกัน ก็ทำได้รวดเร็วแบบไม่มี blocking ด้วย(ไม่ต้องหยุดรอการ update ก่อนจะใช้งานได้ต่อ)
master slave replication คือการสำรองข้อมูลไว้กับอีกเครื่องหนึ่ง
เชื่อมต่อได้กับหลายภาษา
ตอนนี้ มี library สำหรับเชื่อมต่อ redis กับภาษาต่างๆมากมาย ไม่ว่าจะเป็น C, C#, C++, Clojure, Common Lisp, D, Dart, emacs lisp, Erlang, Fancy, Go, Haskell, haXe, Io, Java, Lua, Node.js, Objective-C, Perl, PHP, Pure Data, Python, Ruby, Scala, Scheme, Smalltalk, Tcl หรือแม้กระทั่ง libray ที่เป็นแบบ ORM ก็ยังมีอีกมากมายหลายสิบตัว หรือหากภาษาที่คุณใช้ ไม่มีใน list ก็สามารถอ่านคู่มื่อ เพื่อเขียนคำสั่งเชื่อมต่อ socket โดยตรงได้เลยเช่นกัน เพราะว่า เป็นการเชื่อม socket และรับส่งคำสั่งกันด้วย string ตามแบบปกติเลยนั่นเอง
ประเภทข้อมูลที่เก็บใน Redis มี 5 แบบ
- เก็บข้อมูล redis ประเภท String
การทำงานกับ Key Value ส่วนใหญ่ เราก็ทำงานกัน string เป็นหลักๆอยู่แล้ว แต่ว่า string ก็มีนัยอยู่ เช่นถ้าเราเก็บแบบ Binary เราก็จะสามารถเก็บไฟล์ เช่นรูปภาพ Jpeg ได้เลย
- เก็บข้อมูล redis ประเภท Lists
ในการเก็บเป็น list รายการ ที่ลำดับเป็นส่วนสำคัญ โดยเราสามารถเอาไป sort ได้ หรือว่า จะเพิ่มเข้าไปตามตำแหน่งที่ระบุอย่างแน่ชัดได้ และยังมีการ push ที่หัว หรือ ท้าย รวมไปถึงการดึงข้อมูลออก จากหัว และท้ายด้วยเช่นกัน โดยให้มองว่าเป็นการเก็บข้อมูลแบบเป็นสายยาวๆ ที่ต่อกันอย่างมีลำดับนั่นล่ะครับ เพราะลำดับ ถือว่าเป็นสิ่งสำคัญ
ข้อดี
*สร้าง Lists ได้ง่ายและเร็ว
*ทราบตำแหน่งในการจัดเก็บข้อมูลที่แน่นอน
ข้อเสีย
*การประมวลผลใน Lists ทำได้ยาก และทำงานช้ามาก เช่น การลบข้อมูล, การเพิ่มข้อมูล
- เก็บข้อมูล redis ประเภท Sets
การเก็บข้อมูลแบบ set จะไม่สามารถเก็บข้อมูลซ้ำกันได้ ประโยชน์ของ set มันคือการเข้าถึงข้อมูลที่รวดเร็วเวลาที่เราจะเก็บข้อมูลอะไรเข้าไป เราจึงมั่นใจได้ว่า เราจะได้ข้อมูลที่ unique โดยที่ไม่ต้องเช็คการมีอยู่ก่อน
- เก็บข้อมูล redis ประเภท Hashes
เป็นแบบที่ถูกใช้งานมากที่สุด และ ใช้งานสะดวกที่สุด และเค้าแนะนำให้ใช้งานมากที่สุด อันเนื่องมาจากมันเก็บข้อมูลได้หลากหลายนั่นเอง การเก็บข้อมูลแบบ hashes แต่ละ Keys เก็บค่าได้หลายอย่าง หลายแบบ
- เก็บข้อมูล redis ประเภท Sorted sets
แบบนี้ จะเหมือนกับ sets เลย ก็คือ เก็บสมาชิกต่างๆเข้ามา แต่ว่า ความแตกต่างของมันก็คือ มีคำสั่งมาให้ดำเนินการสำหรับ ค่าที่เก็บได้ด้วย ในลักษณะ score ranking ก็คือ เราสามารถใช้ sorted sets ในการเก็บคะแนน ที่ค่าที่เก็บมีผลต่อลำดับ เพื่อใช้ในการเรียงคะแนน ลำดับ และยังสามารถเก็บคะแนนที่ซ้ำกันได้อีกด้วย (sets ปกติ จะเก็บค่าที่ซ้ำไม่ได้)
Redis คืออะไร ?
Moderator: mindphp, ผู้ดูแลกระดาน
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41336
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: Redis คืออะไร ?
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41336
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: Redis คืออะไร ?
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
-
- PHP Super Member
- โพสต์: 245
- ลงทะเบียนเมื่อ: 12/02/2011 12:34 am
- ที่อยู่: https://page.line.me/oer1981h
- ติดต่อ:
-
- Similar Topics
- ตอบกลับ
- แสดง
- โพสต์ล่าสุด
-
-
โพสต์ใหม่ มาทำความรู้จักกับ Redis สอน Redis เชื่อมต่อ Python
โดย thitikorn_lp » 26/09/2014 12:05 pm » ใน Programming - C/C++ & java & Python - 4 ตอบกลับ
- 4029 แสดง
-
โพสต์ล่าสุด โดย thitikorn_lp
07/10/2014 9:32 am
-
-
-
โพสต์ใหม่ ฐานข้อมูลเเบบเดียวกับ Redis มีอะไรบ้างค่ะ
โดย thatsawan » 29/09/2014 11:48 am » ใน SQL - Database - 2 ตอบกลับ
- 1352 แสดง
-
โพสต์ล่าสุด โดย thatsawan
05/10/2014 10:28 pm
-
-
-
โพสต์ใหม่ เตรียมพบกับ PHP Symfony Redis เร็วๆ นี้
โดย mindphp » 12/10/2014 12:18 am » ใน Programming - PHP - 0 ตอบกลับ
- 935 แสดง
-
โพสต์ล่าสุด โดย mindphp
12/10/2014 12:18 am
-
-
-
โพสต์ใหม่ เรียกใช้งาน redis แล้วแสดง error
โดย thitikorn_lp » 14/08/2014 2:23 pm » ใน Programming - C/C++ & java & Python - 3 ตอบกลับ
- 1384 แสดง
-
โพสต์ล่าสุด โดย mindphp
14/08/2014 9:38 pm
-
-
-
โพสต์ใหม่ จะใช้งาน Redis กับ PHP บน window ยังไงได้ ค่ะ
โดย thatsawan » 07/10/2014 11:08 am » ใน Programming - PHP - 2 ตอบกลับ
- 1166 แสดง
-
โพสต์ล่าสุด โดย thatsawan
07/10/2014 12:44 pm
-
-
-
โพสต์ใหม่ error : เช็ต phpBB3.1 เพื่อใช้งาน redis
โดย thatsawan » 11/10/2014 4:15 pm » ใน Programming - PHP - 7 ตอบกลับ
- 1868 แสดง
-
โพสต์ล่าสุด โดย offing
12/10/2014 8:13 pm
-
-
-
โพสต์ใหม่ Redis เชื่อมต่อกับฐานข้อมูลทั้ง MySQL และ PostgreSQL ทำยังไงค่ะ
โดย thatsawan » 07/10/2014 12:56 am » ใน SQL - Database - 4 ตอบกลับ
- 3384 แสดง
-
โพสต์ล่าสุด โดย บุคคลทั่วไป
09/06/2022 9:00 am
-
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 12