Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

เพิ่มประสิทธิภาพ .NET Core 6 ด้วย Redis Caching: คู่มือทีละขั้นตอน

บทนำ

ในโลกดิจิทัลที่เร่งรีบวันนี้ แอปพลิเคชันคาดหวังให้ส่งมอบประสิทธิภาพสูงและตอบสนองเร็ว วิธีหนึ่งคือการนำกลไก caching มาใช้เก็บข้อมูลที่เข้าถึงบ่อย ลดการดึงข้อมูลจากฐานข้อมูลซ้ำๆ Redis เป็น in-memory data store ยอดนิยมที่ให้โซลูชัน caching แบบ robust สำหรับ .NET Core applications ในบทความนี้ เราจะสำรวจวิธีรวม Redis cache ในแอป .NET Core 6 พร้อมตัวอย่างปฏิบัติ

ข้อกำหนดเบื้องต้น

ก่อนเริ่ม ตรวจสอบว่ามีสิ่งต่อไปนี้ติดตั้งแล้ว:

  1. .NET Core 6 SDK: ติดตั้ง .NET Core 6 SDK หรือใหม่กว่า ดาวน์โหลดจากเว็บไซต์ .NET อย่างเป็นทางการ
  2. Redis Server: ติดตั้งและรัน Redis server ในเครื่องท้องถิ่น หรือใช้ Redis cloud service

ติดตั้ง Redis Server บน Windows

ดาวน์โหลด Redis

คุณสามารถดาวน์โหลด Redis เวอร์ชันที่ค่อนข้างเก่า (precompiled) สำหรับ Windows 64-bit จาก GitHub: https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi

คลิกลิงก์นี้ จะได้ไฟล์ .msi ซึ่งเป็น Windows installer ไปที่โฟลเดอร์ Downloads หาไฟล์นี้

คลิกไฟล์และติดตั้ง Redis

Redis Server จะติดตั้งที่ C:\Program Files\Redis จะมีไฟล์ .exe ชื่อ redis-server

เพิ่มประสิทธิภาพ .NET Core 6 ด้วย Redis Caching: คู่มือทีละขั้นตอน

เปิด command line และรันคำสั่ง:

redis-server

เพิ่มประสิทธิภาพ .NET Core 6 ด้วย Redis Caching: คู่มือทีละขั้นตอน

Redis server เริ่มทำงานแล้ว

คุณสามารถ monitor การอัปเดตและการเปลี่ยนแปลงใน Redis server ด้วยคำสั่ง:

redis-cli monitor

เพิ่มประสิทธิภาพ .NET Core 6 ด้วย Redis Caching: คู่มือทีละขั้นตอน

สร้าง .NET Core 6 Console Application

dotnet new console -n RedisCacheDemo

นำทางไปโฟลเดอร์โปรเจกต์

cd RedisCacheDemo

ติดตั้งแพ็กเกจที่จำเป็น

dotnet add package StackExchange.Redis

กำหนดค่าการเชื่อมต่อ Redis

ในไฟล์ Program.cs เพิ่ม statement ที่จำเป็น และกำหนดค่า Redis connection ในเมธอด 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(); // สำคัญ: ปิด connection
}

static string GetDataFromDatabase() {
    // จำลองการดึงข้อมูลจาก database
    // แทนที่ด้วย logic การดึงข้อมูลจริงของคุณ
    Thread.Sleep(2000); // จำลอง latency
    return "Start";
}

static string GetDataWithCaching(IDatabase redisCache) {
    // redisCache.KeyDelete("cachedData"); // สำหรับลบ Cache
    // redisCache.StringSet("cachedData", "Test", TimeSpan.FromMinutes(1)); // สำหรับอัปเดต Cache
    string cachedData = redisCache.StringGet("cachedData");
    if (string.IsNullOrEmpty(cachedData)) {
        cachedData = GetDataFromDatabase();
        redisCache.StringSet("cachedData", cachedData, TimeSpan.FromMinutes(1));
    }
    return cachedData;
}

รันโปรแกรมนี้ต่อไป

ในผลลัพธ์นี้ ผลลัพธ์พร้อมและไม่พร้อม cache เหมือนกัน เพราะ output ถูกเก็บใน cache ครั้งแรกที่สร้างขึ้น อย่างไรก็ตาม หากมีการเปลี่ยนแปลงในโค้ด ผลลัพธ์จะต่างกัน

static string GetDataFromDatabase() {
    // จำลองการดึงข้อมูลจาก database
    Thread.Sleep(2000); // จำลอง latency
    return "Last";
}

ผมอัปเดตค่าในโค้ดและรันใหม่

ในผลลัพธ์นี้ ค่าแรกดึงจาก cache และค่าที่สองดึงโดยไม่ใช้ cache

สรุป

ยินดีด้วย! คุณรวม Redis cache เข้าแอป .NET Core 6 สำเร็จแล้ว ด้วยการนำ caching มาใช้ คุณปรับปรุงประสิทธิภาพและความตอบสนองของแอปพลิเคชัน ทำให้มีประสิทธิภาพมากขึ้นในการจัดการข้อมูลที่เข้าถึงบ่อย