บทนำ
ในโลกดิจิทัลที่เปลี่ยนแปลงอย่างรวดเร็วในปัจจุบัน แอปพลิเคชันต่างๆ ได้รับการคาดหวังให้มอบประสิทธิภาพและการตอบสนองในระดับสูง วิธีหนึ่งในการบรรลุเป้าหมายนี้คือการใช้กลไกแคชที่จัดเก็บข้อมูลที่มีการเข้าถึงบ่อย ช่วยลดความจำเป็นในการดึงข้อมูลจากฐานข้อมูลซ้ำๆ Redis ซึ่งเป็นที่เก็บข้อมูลในหน่วยความจำยอดนิยม นำเสนอโซลูชันการแคชที่มีประสิทธิภาพสำหรับแอปพลิเคชัน .NET Core ในบทความนี้ เราจะสำรวจวิธีผสานรวมแคช Redis ในแอปพลิเคชัน .NET Core 6 พร้อมตัวอย่างที่ใช้งานได้จริง
ข้อกำหนดเบื้องต้น ป>
ก่อนที่เราจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งข้อกำหนดเบื้องต้นต่อไปนี้ไว้ในระบบของคุณแล้ว
- .NET Core 6 SDK: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง .NET Core 6 SDK หรือใหม่กว่า คุณสามารถดาวน์โหลดได้จากเว็บไซต์ .NET อย่างเป็นทางการ
- เซิร์ฟเวอร์ Redis: ติดตั้งและเรียกใช้เซิร์ฟเวอร์ Redis ภายในเครื่องหรือใช้บริการคลาวด์ Redis
ติดตั้งเซิร์ฟเวอร์ Radis บนหน้าต่าง
ดาวน์โหลด Redis
คุณสามารถดาวน์โหลด Redis เวอร์ชันพรีคอมไพล์ที่ล้าสมัยปานกลางสำหรับ Windows 64 บิตได้จากหน้า GitHub นี้:https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi
โดยการคลิก ลิงก์นี้ คุณจะได้รับ ไฟล์ .msi ซึ่งเป็นตัวติดตั้ง Windows . ตอนนี้ไปที่ การดาวน์โหลด ของคุณ โฟลเดอร์และค้นหาไฟล์นี้
ตอนนี้คลิกที่ไฟล์นั้นและติดตั้ง Redis
ควรติดตั้งเซิร์ฟเวอร์ Redis ไปที่ C:\Program Files\Redis . ที่นั่น คุณจะพบไฟล์ .exe ชื่อ redis-server ป>

ตอนนี้ให้เปิดบรรทัดคำสั่งแล้วป้อนคำสั่งนี้
redis-server

เซิร์ฟเวอร์ Redis ของคุณเริ่มทำงาน
ตอนนี้คุณสามารถตรวจสอบการอัปเดตและการเปลี่ยนแปลงในเซิร์ฟเวอร์ Redis ได้ด้วยคำสั่งนี้
redis-cli monitor

สร้างแอปพลิเคชันคอนโซล .NET Core 6
dotnet new console -n RedisCacheDemo นำทางไปยังโฟลเดอร์โครงการ ป>
cd RedisCacheDemo ติดตั้งแพ็คเกจที่จำเป็น ป>
dotnet add package StackExchange.Redis กำหนดค่าการเชื่อมต่อ Redis
ใน Program.cs เพิ่มคำสั่งที่จำเป็น และกำหนดค่าการเชื่อมต่อ Redis ใน Main วิธีการ:
static void Main(string[] args)
{
var configuration = ConfigurationOptions.Parse("localhost:6379");
var redisConnection = ConnectionMultiplexer.Connect(configuration);
var redisCache = redisConnection.GetDatabase();
Console.WriteLine("Fetching data with caching:");
var cachedData = GetDataWithCaching(redisCache);
Console.WriteLine($"Result: {cachedData}");
Console.WriteLine("Fetching data without caching:");
var uncachedData = GetDataFromDatabase();
Console.WriteLine($"Result: {uncachedData}");
redisConnection.Close(); //It is important to close the connection
}
static string GetDataFromDatabase()
{
// Simulate fetching data from the database
// Replace this with your actual database fetching logic
Thread.Sleep(2000); // Simulating latency
return "Start";
}
static string GetDataWithCaching(IDatabase redisCache)
{
// redisCache.KeyDelete("cachedData"); // For Delete the Cache
// redisCache.StringSet("cachedData", "Test", TimeSpan.FromMinutes(1)); // For Update the Cache
string cachedData = redisCache.StringGet("cachedData");
if (string.IsNullOrEmpty(cachedData))
{
cachedData = GetDataFromDatabase();
redisCache.StringSet("cachedData", cachedData, TimeSpan.FromMinutes(1));
}
return cachedData;
} โปรดดำเนินการใช้งานโปรแกรมนี้ต่อไป
ป>
ในเอาต์พุตนี้ ผลลัพธ์ที่มีและไม่มีแคชจะเหมือนกัน นี่เป็นเพราะว่าเอาต์พุตถูกเก็บไว้ในแคชในครั้งแรกที่ถูกสร้างขึ้น อย่างไรก็ตาม หากมีการเปลี่ยนแปลงโค้ด ผลลัพธ์จะแตกต่างออกไป
static string GetDataFromDatabase()
{
// Simulate fetching data from the database
// Replace this with your actual database fetching logic
Thread.Sleep(2000); // Simulating latency
return "Last";
} ฉันอัปเดตค่าของโค้ดแล้วและจะเรียกใช้อีกครั้ง
ป>
ในเอาต์พุตนี้ ค่าแรกจะถูกดึงมาจากแคช และค่าที่สองจะถูกดึงออกมาโดยไม่ใช้แคช
บทสรุป
ขอแสดงความยินดี! คุณได้รวมแคช Redis เข้ากับแอปพลิเคชัน .NET Core 6 ของคุณเรียบร้อยแล้ว ด้วยการใช้แคช คุณได้ปรับปรุงประสิทธิภาพและการตอบสนองของแอปพลิเคชันของคุณ ทำให้มีประสิทธิภาพมากขึ้นในการจัดการข้อมูลที่เข้าถึงบ่อย