Redis
การเก็บข้อมูลในหน่วยความจำแบบโอเพนซอร์สเพื่อใช้งานเป็นฐานข้อมูล แคช ตัวกลางรับส่งข้อความ และคิว
Redis คืออะไร
Redis คือการเก็บข้อมูลค่าคีย์ในหน่วยความจำแบบโอเพนซอร์สที่รวดเร็วเพื่อใช้งานเป็นฐานข้อมูล แคช ตัวกลางรับส่งข้อความ และคิว ซึ่งช่วยให้เวลาตอบสนองระดับต่ำกว่ามิลลิวินาที เพื่อให้คำขอหลายล้านครั้งต่อวินาทีสามารถเรียกใช้แอปพลิเคชันแบบเรียลไทม์ได้ในวงการเกม สื่อโฆษณา บริการทางการเงิน บริการด้านสุขภาพ และ IoT Redis เป็นตัวเลือกยอดนิยมสำหรับการแคช การจัดการเซสชัน การวิเคราะห์แบบเรียลไทม์ ข้อมูลเชิงพื้นที่ การสนทนา/ส่งข้อความ การสตรีมมิงสื่อ และลีดเดอร์บอร์ดของเกม
Redis ทำงานอย่างไร
ข้อมูล Redis ทั้งหมดอยู่ในหน่วยความจำ ตรงข้ามกับฐานข้อมูลที่เก็บข้อมูลบนดิสก์หรือ SSD เมื่อไม่จำเป็นต้องเข้าถึงดิสก์อีกต่อไป ข้อมูลที่เก็บอยู่ในหน่วยความจำอย่างเช่น Redis จะลดความล่าช้าในการค้นหาและสามารถเข้าถึงข้อมูลได้ในระดับไมโครวินาที Redis มีโครงสร้างข้อมูลหลากหลายรูปแบบ ความพร้อมใช้งานสูง การทำข้อมูลเชิงพื้นที่ การเขียนสคริปต์ Lua การทำธุรกรรม การคงอยู่บนดิสก์ และการสนับสนุนคลัสเตอร์ ช่วยให้ง่ายขึ้นในการสร้างแอประดับอินเทอร์เน็ตแบบเรียลไทม์
Redis ที่มีการจัดการอย่างเต็มรูปแบบพร้อมการเข้ารหัส การปรับขนาดคลัสเตอร์ออนไลน์ ความพร้อมใช้งานสูง และการปฏิบัติตามข้อกำหนด เรียนรู้เพิ่มเติม >>
ประโยชน์ของ Redis
การจัดเก็บข้อมูลในหน่วยความจำ
ข้อมูล Redis ทั้งหมดอยู่ในหน่วยความจำหลักของเซิร์ฟเวอร์ ตรงข้ามกับฐานข้อมูลเช่น PostgreSQL, Cassandra, MongoDB และอื่นๆ ที่เก็บข้อมูลส่วนใหญ่บนดิสก์หรือบน SSD เมื่อเทียบกับฐานข้อมูลดิสก์แบบดั้งเดิมที่การดำเนินงานส่วนใหญ่ต้องการการหมุนเวียนไปยังดิสก์ การเก็บข้อมูลในหน่วยความจำเช่น Redis จะไม่มีปัญหาในลักษณะเดียวกัน ดังนั้นจึงสามารถรองรับการสั่งการให้มีการดำเนินงานได้มากขึ้นและเวลาตอบสนองที่เร็วขึ้น ผลที่ได้คือประสิทธิภาพที่รวดเร็วอย่างเห็นได้ชัดด้วยการอ่านหรือเขียนโดยเฉลี่ยซึ่งจะใช้เวลาน้อยกว่ามิลลิวินาที และรองรับการทำงานหลายล้านรายการต่อวินาที
โครงสร้างข้อมูลที่ยืดหยุ่น
Redis มีโครงสร้างข้อมูลหลากหลายรูปแบบเพื่อตอบสนองความต้องการแอปพลิเคชันของคุณ ต่างจากที่เก็บข้อมูลค่าคีย์ที่มีโครงสร้างข้อมูลที่จำกัด ประเภทข้อมูล Redis ประกอบด้วย
- String – ข้อความหรือข้อมูลไบนารีที่มีขนาดได้ถึง 512MB
- List – ชุดของ String ตามลำดับที่ถูกเพิ่ม
- Set – คอลเลกชันที่ไม่ได้จัดลำดับของ String ที่มีความสามารถในการตัดกัน รวมกัน และแตกต่างจาก Set ประเภทอื่นๆ
- Sorted Set – Set ที่เรียงลำดับตามค่า
- Hash – โครงสร้างข้อมูลสำหรับจัดเก็บรายการฟิลด์และค่าต่างๆ
- Bitmap – ประเภทข้อมูลที่ดำเนินงานในระดับบิต
- HyperLogLog – โครงสร้างข้อมูลที่น่าจะเป็นเพื่อคาดการณ์รายการที่ไม่ซ้ำกันในชุดข้อมูล
ความเรียบง่ายและใช้งานง่าย
Redis ช่วยลดความยุ่งยากในโค้ดของคุณโดยทำให้คุณเขียนโค้ดน้อยลงเพื่อจัดเก็บ เข้าถึง และใช้งานข้อมูลในแอปพลิเคชันของคุณ ยกตัวอย่างเช่นถ้าแอปพลิเคชันของคุณมีข้อมูลที่ถูกจัดเก็บไว้ในตารางแฮช และคุณต้องการที่จะเก็บข้อมูลนั้นไว้ในที่เก็บข้อมูล คุณก็เพียงแค่ใช้โครงสร้างข้อมูลแฮช Redis เพื่อเก็บข้อมูล งานที่คล้ายกันในที่จัดเก็บข้อมูลโดยไม่มีโครงสร้างข้อมูลแฮชจะต้องใช้โค้ดหลายบรรทัดเพื่อแปลงจากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง Redis มาพร้อมกับโครงสร้างข้อมูลดั้งเดิมและตัวเลือกมากมายในการจัดการและมีปฏิสัมพันธ์กับข้อมูลของคุณ โดยมีลูกค้าโอเพนซอร์สมากกว่าหนึ่งร้อยรายสำหรับนักพัฒนา Redis ภาษาที่รองรับได้แก่ Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go และอีกมากมาย
การทำซ้ำและการเก็บข้อมูลซ้ำ
Redis ใช้สถาปัตยกรรมแบบจำลองหลักและรองรับการจำลองแบบไม่สัมพันธ์ซึ่งข้อมูลสามารถจำลองแบบไปยังเซิร์ฟเวอร์แบบจำลองได้หลายแบบ ช่วยเพิ่มประสิทธิภาพการอ่าน (ตามที่คำขอสามารถถูกแบ่งระหว่างเซิร์ฟเวอร์) และการกู้คืนได้อย่างรวดเร็วเมื่อเซิร์ฟเวอร์หลักประสบปัญหาหยุดทำงาน สำหรับการเก็บข้อมูลซ้ำ Redis รองรับการสำรองข้อมูลตามช่วงเวลา (การคัดลอกชุดข้อมูล Redis ไปยังดิสก์)
ความพร้อมใช้งานสูงและความยืดหยุ่น
Redis มีโครงสร้างสถาปัตยกรรมแบบจำลองในโหนดหลักโหนดเดียวหรือทอพอโลยีแบบคลัสเตอร์ ซึ่งช่วยให้คุณสามารถสร้างโซลูชันที่พร้อมใช้งานได้อย่างเต็มที่เพื่อให้ได้ประสิทธิภาพและความน่าเชื่อถือที่สม่ำเสมอ เมื่อคุณต้องปรับขนาดคลัสเตอร์ จะมีตัวเลือกมากมายเพื่อขยายขนาดเพิ่มหรือลดได้ให้ใช้งาน ช่วยให้คลัสเตอร์ของคุณเติบโตขึ้นได้ตามความต้องการ
การขยาย
Redis เป็นโครงการโอเพนซอร์สที่ได้รับการรองรับจากชุมชนที่มีชีวิตชีวา ไม่มีการผูกขาดผู้จัดจำหน่ายหรือเทคโนโลยีเพราะ Redis เป็นมาตรฐานแบบเปิด รองรับรูปแบบข้อมูลที่เปิดกว้าง และมีกลุ่มลูกค้าที่หลากหลาย นอกจากนี้ลูกค้ายังสามารถขยาย Redis เพื่อตอบสนองความต้องการเฉพาะของตนด้วยโมดูล Redis
กรณีใช้งาน Redis ยอดนิยม
การแคช
Redis เป็นทางเลือกที่ดีสำหรับการใช้แคชในหน่วยความจำที่พร้อมใช้งานสูงเพื่อลดเวลาแฝงในการเข้าถึงข้อมูล เพิ่มปริมาณการใช้งาน และลดภาระการใช้ฐานข้อมูลและแอปพลิเคชันเชิงสัมพันธ์หรือ NoSQL ของคุณ Redis สามารถให้บริการรายการที่ขอบ่อยได้ด้วยเวลาตอบสนองระดับต่ำกว่ามิลลิวินาที ช่วยให้คุณสามารถปรับขนาดการโหลดที่สูงขึ้นโดยไม่ต้องเพิ่มระบบจัดการราคาแพง การแคชผลการสืบค้นฐานข้อมูล การแคชเซสชันถาวร การแคชหน้าเว็บ และการแคชออบเจ็กต์ที่ใช้งานบ่อย เช่น ภาพ ไฟล์ และข้อมูลเมตา เป็นตัวอย่างยอดนิยมของการแคชด้วย Redis
การสนทนา การส่งข้อความ และการรอคิว
Redis รองรับการเผยแพร่/การติดตามที่มีรูปแบบการจับคู่และโครงสร้างข้อมูลที่หลากหลายเช่นรายการ ชุดเรียงลำดับ และแฮช ซึ่งช่วยให้ Redis สามารถรองรับห้องสนทนาที่มีประสิทธิภาพสูง สตรีมความคิดเห็นแบบเรียลไทม์ ฟีดสังคมออนไลน์ และการสื่อสารภายในของเซิร์ฟเวอร์ โครงสร้างข้อมูลรายการ Redis จะช่วยให้ใช้งานคิวน้ำหนักเบาได้ง่ายขึ้น List จะนำเสนอปฏิบัติการแบบภาวะครบหน่วยเช่นเดียวกับความสามารถในการบล็อก ทำให้เหมาะสำหรับแอปพลิเคชันที่หลากหลายซึ่งต้องใช้ตัวกลางรับส่งข้อความที่เชื่อถือได้หรือรายการแบบวงกลม
ลีดเดอร์บอร์ดของเกม
Redis เป็นตัวเลือกยอดนิยมในหมู่นักพัฒนาเกมที่ต้องการสร้างลีดเดอร์บอร์ดแบบเรียลไทม์ เพียงแค่ใช้โครงสร้างข้อมูลชุดเรียงลำดับ Redis ซึ่งมีเอกลักษณ์องค์ประกอบเฉพาะในขณะที่ยังรักษาการเรียงลำดับตามคะแนนของผู้ใช้ การสร้างรายการจัดอันดับแบบเรียลไทม์เป็นเรื่องง่ายเหมือนการอัปเดตคะแนนของผู้ใช้ทุกครั้งที่มีการเปลี่ยนแปลง นอกจากนี้คุณยังสามารถใช้ชุดเรียงลำดับเพื่อจัดการกับชุดข้อมูลเวลาโดยใช้การประทับเวลาเป็นคะแนน
ที่เก็บเซสชัน
Redis เป็นที่เก็บข้อมูลในหน่วยความจำที่มีความพร้อมใช้งานสูงและทนทานสูงยังคงเป็นตัวเลือกยอดนิยมในหมู่นักพัฒนาแอปพลิเคชันเพื่อจัดเก็บและจัดการข้อมูลเซสชันสำหรับแอปพลิเคชันระดับอินเทอร์เน็ต Redis ให้ช่วงเวลาแฝงระดับต่ำกว่ามิลลิวินาที ขนาด และความยืดหยุ่นที่ใช้ในการจัดการข้อมูลเซสชัน เช่น โปรไฟล์ผู้ใช้ ข้อมูลประจำตัว สถานะเซสชัน และการกำหนดค่าเฉพาะผู้ใช้
การสตรีมมิ่งสื่ออย่างเต็มรูปแบบ
Redis มอบพื้นที่จัดเก็บข้อมูลที่รวดเร็วในหน่วยความจำเพื่อให้สามารถใช้งานสตรีมมิ่งแบบสดได้ Redis สามารถใช้เก็บข้อมูลเมตาเกี่ยวกับโปรไฟล์ผู้ใช้และประวัติการดูข้อมูล การรับรองความถูกต้อง/โทเค็นสำหรับผู้ใช้นับล้านราย และแสดงไฟล์เพื่อให้ CDN สามารถสตรีมวิดีโอไปยังผู้ใช้โทรศัพท์มือถือและเดสก์ท็อปนับล้านรายได้ในเวลาเดียวกัน
ข้อมูลเชิงพื้นที่
Redis มาพร้อมกับโครงสร้างข้อมูลและหน่วยประมวลผลข้อมูลในหน่วยความจำเพื่อจัดการข้อมูลเชิงพื้นที่แบบเรียลไทม์ในขนาดและความเร็วที่ต้องการ คำสั่งเช่น GEOADD, GEODIST, GEORADIUS และ GEORADIUSBYMEMBER เพื่อจัดเก็บ ประมวลผล และวิเคราะห์ข้อมูลเชิงพื้นที่ตามเวลาจริงช่วยให้การจัดการข้อมูลเชิงพื้นที่ง่ายดายและรวดเร็วยิ่งขึ้นด้วย Redis คุณสามารถใช้ Redis เพื่อเพิ่มคุณสมบัติที่อิงตามตำแหน่งเช่นเวลาในการขับรถ ระยะทางในการขับรถ และจุดที่น่าสนใจลงไปในแอปพลิเคชันของคุณ
Machine Learning
แอปพลิเคชันขับเคลื่อนด้วยข้อมูลสมัยใหม่ต้องการ Machine Learning เพื่อประมวลผลข้อมูลปริมาณมหาศาลที่หลากหลายและรวดเร็วและการตัดสินใจโดยอัตโนมัติ สำหรับกรณีใช้งานเช่นการตรวจสอบการฉ้อโกงในเกมและบริการทางการเงิน การเสนอราคาแบบเรียลไทม์ในเทคโนโลยีโฆษณา และการจับคู่เพื่อนัดเดทหรือแบ่งปันรถสำหรับเดินทางร่วมกัน ความสามารถในการประมวลผลข้อมูลแบบทันทีและตัดสินใจได้ภายในสิบมิลลิวินาทีถือเป็นเรื่องสำคัญอย่างยิ่ง Redis ให้พื้นที่จัดเก็บข้อมูลในหน่วยความจำที่รวดเร็วเพื่อสร้าง ฝึก และปรับใช้โมเดล Machine Learning ได้อย่างรวดเร็ว
การวิเคราะห์แบบเรียลไทม์
Redis สามารถใช้งานได้กับโซลูชันสตรีมมิ่งเช่น Apache Kafka และ Amazon Kinesis ในฐานะที่เป็นที่จัดเก็บข้อมูลในหน่วยความจำเพื่อนำเข้า ประมวลผล และวิเคราะห์ข้อมูลแบบเรียลไทม์ด้วยเวลาแฝงระดับต่ำกว่ามิลลิวินาที Redis คือตัวเลือกที่เหมาะสมอย่างยิ่งสำหรับกรณีการใช้งานด้านการวิเคราะห์แบบเรียลไทม์เช่นการวิเคราะห์สื่อสังคมออนไลน์ การกำหนดเป้าหมายโฆษณา การปรับเปลี่ยนให้เหมาะกับบุคคล และ IoT
การรองรับภาษา
Redis รองรับภาษาโปรแกรมและโปรโตคอลชั้นนำ ได้แก่:
Python
Java
PHP
Perl
Go
Ruby
C/C#/C++
JavaScript
Node.js
Redis ที่ได้รับการจัดการแบบเต็มรูปแบบบน AWS
ทรัพยากร Redis