Redis เป็น open source (BSD licensed) NoSQL database เป็น In-Memory Database ที่พัฒนาจากแนวคิด Key-Value Store Redis ยังถูกเรียกอีกอย่างว่า Data Structure Store
มาทำความเข้าใจแต่ละคำทีละอย่างกัน:
- Key-Value Datastore: เป็น paradigm การจัดเก็บข้อมูล ที่ข้อมูลถูกจัดเก็บและดึงคืนมาเป็น value ต่อ key ซึ่งระบุตัวตนของ value ที่เก็บใน database อย่างไม่ซ้ำกัน Redis สามารถมองได้ว่าเป็น Hash Table ขนาดใหญ่
- In-Memory Database: เป็น database ที่จัดเก็บข้อมูลทั้งหมดใน main memory (RAM) หมายถึงเมื่อคุณ query database หรือ update ข้อมูลใน database คุณเข้าถึงแค่ main memory ไม่มีการเข้าถึง disk เกิดขึ้น เนื่องจากการเข้าถึง main memory เร็วกว่าการเข้าถึง disk memory มาก Redis database จึงเร็วกว่า database ที่พัฒนาจาก disk memory อย่างมาก แม้ข้อมูลใน memory สามารถ persist ลง disk ได้ด้วยการตั้งค่าที่เหมาะสม
- Data Structure Store: ใน Redis key จะเป็น string data type เสมอ แต่ value สามารถเป็น string, hash, set, sorted set, list, hyperloglog และ geospatial indexes types ได้

Redis เป็น datastore ที่ยืดหยุ่นและขยายได้สูง สามารถใช้เป็น Database, Message Broker และ Cache Server ได้ เป็น single-threaded หมายถึงประมวลผล request ได้ทีละหนึ่งครั้ง แต่สามารถใช้ batch commands เพื่อลดจำนวน request ไปยัง Redis server
ใน Redis การ persist ข้อมูลใน main memory สามารถทำได้ 2 วิธี คือ 1) dump ข้อมูลทั้งหมดลง flat file บน hard disk และ 2) บันทึกคำสั่งที่ execute ทั้งหมดลงไฟล์ เมื่อ Redis server เริ่มทำงาน จะโหลดข้อมูลจาก dump file หรือ execute คำสั่งทั้งหมดตามลำดับ เพื่อทำให้ Redis server อยู่ในสถานะ consistent และพร้อมใช้งาน
คุณสมบัติหลัก (Features)
คุณสมบัติหลักของ Redis datastore มีดังนี้:
- Atomic Operations: คำสั่ง Redis ทั้งหมดเป็น atomic ซึ่งรับประกันว่าหาก client หลายตัวทำ CRUD operations ใน Redis server พร้อมกัน ทุก client จะได้ค่าที่อัปเดตล่าสุด
- Supports multiple datatypes: รองรับหลาย datatype เช่น string, list, set, sorted set, bitmaps เป็นต้น ทำให้ Redis ยืดหยุ่นพอใช้ในหลาย scenario
- Extremely Fast: จัดเก็บข้อมูลทั้งหมดใน main memory ทำให้เร็วมาก ยังรองรับ pipelining ของคำสั่ง ทำให้ client cli และ client libraries ทำ operations หลายอย่างได้ด้วยคำสั่งเดียว
- Client Library Support: รองรับภาษาโปรแกรมส่วนใหญ่ เช่น C, C++, C#, Clojure, Java ผ่าน client libraries
- Master/Slave Replication: รองรับ Master/Slave replication ผ่านการตั้งค่าบรรทัดเดียว
Concepts
รายการบทความที่ครอบคลุม concepts สำคัญต่างๆ ใน Redis:
- Keys Commands
- String Commands
- List Commands
- Set Commands
- Hash Commands
- Geo Commands
- Redis Keys tutorial with jedis library
- Redis List tutorial with jedis library
- Redis Set tutorial with jedis library
- Redis Hash tutorial with jedis library
- Redis Geo tutorial with jedis library
- Redis Pub Sub tutorial with jedis library
หากชอบบทเรียนนี้ กรุณาแบ่งปันความคิดเห็นและแชร์ให้ผู้อื่นด้วยครับ