Redis คืออะไร ?

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderators: mindphp, ผู้ดูแลกระดาน

offing
PHP VIP Members
PHP VIP Members
Posts: 1527
Joined: 18/08/2014 10:01 am

Redis คืออะไร ?

Post by offing »

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 ปกติ จะเก็บค่าที่ซ้ำไม่ได้)

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24425
Joined: 22/09/2008 6:18 pm
Contact:

Re: Redis คืออะไร ?

Post by mindphp »

ติดตาม 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

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24425
Joined: 22/09/2008 6:18 pm
Contact:

Re: Redis คืออะไร ?

Post by mindphp »

เขียน php กับ Redis

https://www.youtube.com/watch?v=YElpnonFw4k
ติดตาม 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

konseo
PHP Super Member
PHP Super Member
Posts: 245
Joined: 12/02/2011 12:34 am
Contact:

Re: Redis คืออะไร ?

Post by konseo »

redis ใช้อยู่ครับ ถือว่าเอาอยู่ดีเลยตัวนี้

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Share Knowledge”

Who is online

Users browsing this forum: No registered users and 3 guests