In-Memory Database คืออะไร?
In-memory database คือระบบจัดการฐานข้อมูลที่พึ่งพาหน่วยความจำหลัก (main memory) สำหรับการจัดเก็บข้อมูลของคอมพิวเตอร์ In-memory databases เร็วกว่า disk-optimized databases เพราะการเข้าถึงดิสก์ช้ากว่าการเข้าถึงหน่วยความจำ การเข้าถึงข้อมูลในหน่วยความจำกำจัด seek time เมื่อสืบค้นข้อมูล ทำให้ได้ประสิทธิภาพที่เร็วกว่าและคาดเดาได้มากกว่าดิสก์ มี in-memory databases หลายตัวสำหรับใช้งานกับ license ต่างๆ ในบทความนี้ เราจะพูดถึง Redis ซึ่งเป็นหนึ่งใน in-memory databases ที่ 유명และเป็น open source ก่อนเริ่มกับ Redis เราจะดูข้อดีหลักของ in-memory database
ข้อดีของ In-Memory Database
- ช่วยในการจัดการ Big Data
- อนุญาตให้ real-time updates ทำให้ธุรกิจเข้าถึงข้อมูลได้ในขณะที่เกิดขึ้น
- ใช้กับแอปพลิเคชันที่ต้องการการเข้าถึงข้อมูล การจัดเก็บ และการจัดการที่เร็วมาก
- In-memory database ไม่เพียงแต่ช่วยให้ query response times เร็วขึ้น แต่ยังลดหรือกำจัดความจำเป็นในการ indexing ข้อมูลและการเก็บ pre-aggregated data ใน OLAP cubes หรือ aggregate tables
Redis
Redis เป็นโปรเจกต์ in-memory database แบบ open-source ที่นำ distributed, in-memory key-value store มาใช้งานพร้อม durability แบบ optional Redis รองรับโครงสร้างข้อมูลนามธรรมหลายชนิด เช่น strings, lists, maps, sets, sorted sets, hyperlog, bitmaps และ spatial indexes รายละเอียดเพิ่มเติมได้ที่ Redis In-Memory Database
เพื่อใช้ Redis in-memory database ในแอปพลิเคชันของเรา เราต้องติดตั้ง Redis database ก่อน สามารถดาวน์โหลดได้ที่ Download latest version of Redis In-Memory Database เมื่อพร้อมแล้ว มาสร้าง console application 簡單เพื่อดูการทำงาน
ขั้นตอนที่ 1. เปิด Visual Studio (ที่นี่ใช้ Microsoft Visual Studio 2015 Community Edition) คลิก File - New - Project สำหรับ demo สร้าง console application

ขั้นตอนที่ 2. เพื่อเชื่อมต่อกับ Redis ต้องดาวน์โหลด Redis Client จาก NuGet Package ใน Solution Explorer คลิกขวาที่ references แล้ว Manage NuGet Packages เปิด NuGet Package Manager ค้นหา ServiceStack.Redis.Complete และติดตั้ง

ขั้นตอนที่ 3. ตอนนี้พร้อมกับ Redis environment แล้ว มาเขียนโค้ด สร้าง 2 static functions: หนึ่งสำหรับ insert ค่าเข้า Redis DB อีกหนึ่งสำหรับอ่านจาก DB
โค้ดสำหรับเก็บข้อมูลใน Redis database:
///<summary>
///ToSaveKeyValuePairinRedisDB
///</summary>
///<paramname="host">RedisHostName</param>
///<paramname="key">Keyasstring</param>
///<paramname="value">Valueasstring</param>
///<returns></returns>
privatestaticboolSave(stringhost,stringkey,stringvalue) {
using(varobjRedisClient=newRedisClient(host)) {
if(objRedisClient.Get<string>(key)==null) {
returnobjRedisClient.Set<String>(key,value);
} else {
returnfalse;
}
}
}
///<summary>
///TogetvaluefromRedisDB
///</summary>
///<paramname="host">RedisHostName</param>
///<paramname="key">Keyasstring</param>
///<returns></returns>
privatestaticstringGet(stringhost,stringkey) {
using(varobjRedisClient=newRedisClient(host)) {
returnobjRedisClient.Get<String>(key);
}
}
ทดสอบโดยเรียกใช้ 2 ฟังก์ชันนี้:
staticvoidMain(string[]args) {
Save("localhost","Key1","Value1");
varresult=Get("localhost","Key1");
}
ผลลัพธ์เมื่อ debug โค้ดนี้:

สรุป
ในบทความนี้ เราเห็นการนำ Redis in-memory database ไปใช้งานพื้นฐาน คุณสามารถดาวน์โหลด sample application source code ที่แนบมากับบทความนี้ หวังว่าคุณจะเพลิดเพลินกับการอ่านบทความนี้ อ่านต่อไปและอย่าลืมส่ง feedback ที่มีค่าให้เรานะครับ