Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

.NET Core에서 Redis 통합 마스터하기:실용 가이드

소개

Redis는 최신 애플리케이션의 캐싱, 세션 저장, 메시지 브로커링 및 게시/구독 통신에 널리 사용되는 빠른 인메모리 키-값 저장소입니다. 가볍고 성능이 뛰어나며 개발자 친화적이므로 확장 가능한 시스템을 구축하는 데 적합합니다.

.NET Core에서 개발 중이고 Redis를 애플리케이션에 통합하려는 경우 이 문서에서는 StackExchange.Redis 라이브러리를 사용하여 기본 Redis 작업을 수행하는 방법을 보여줍니다.

Windows 시스템에서 작업하는 경우 Redis 호환 서버를 사용하여 Linux나 컨테이너화 없이 Redis를 실행할 수 있습니다.

왜 Redis인가요?

Redis는 .NET Core 애플리케이션과 통합되면 여러 가지 이점을 제공합니다.

  1. 캐싱: 자주 액세스하는 데이터를 저장하여 응답 시간을 개선하고 데이터베이스 작업 부하를 줄입니다.
  2. 세션 관리: 분산 시스템에서 사용자 세션을 효율적으로 처리합니다.
  3. 실시간 이벤트: 게시/구독 기능에 Redis를 사용하여 알림이나 이벤트 기반 통신과 같은 실시간 기능을 강화하세요.
  4. 고성능: 메모리에서 작동하여 지연 시간이 짧은 데이터 액세스를 제공합니다.
  5. 확장 가능: 클러스터링 및 샤딩을 지원하는 Redis는 확장성을 고려하여 구축되었습니다.

Redis 설정

Redis 사용

.NET Core 앱을 Redis에 연결하려면 Redis를 실행하면 됩니다.

  • 명령줄 설치: Docker와 같은 도구를 사용하여 Linux 또는 Windows에서 Redis를 실행하세요.
  • 사전 구성된 Windows 대안: Windows를 사용하는 경우 Redis를 기본적으로 실행하기 위한 대체 서버로 Redis 호환 서버를 사용할 수 있습니다.

참고. 단순화를 위해 이 튜토리얼에서는 Redis가 localhost:6379에서 로컬로 실행되고 있다고 가정합니다.

Redis를 사용하여 .NET Core 애플리케이션 구축

이 예에서는 다음 Redis 작업을 수행하는 .NET Core 콘솔 애플리케이션을 만듭니다.

  1. Redis 서버에 연결합니다.
  2. 기본 키-값 작업(설정, 가져오기, 삭제)을 수행합니다.
  3. 키 만료 및 유효성 검사를 보여줍니다.

1단계. .NET Core 프로젝트를 만듭니다.

  1. 터미널을 열고 새 프로젝트를 생성하세요.

    dotnet new RedisIntegrationDemo
  2. Redis 연결을 위해 StackExchange.Redis 패키지를 설치하세요.

    dotnet add package StackExchange.Redis

2단계. 코드를 작성하세요.

Program.cs의 전체 구현은 다음과 같습니다.

using System;
using StackExchange.Redis;
using System.Threading.Tasks;
namespace RedisIntegrationDemo
{
 class Program
 {
 // Connection string for Redis
 private const string RedisConnectionString = "localhost:6379";
 async static Task Main(string[] args)
 {
 Console.WriteLine("Connecting to Redis...");
 // Connect to Redis
 var redis = await ConnectionMultiplexer.ConnectAsync(RedisConnectionString);
 Console.WriteLine("Connected to Redis successfully.\n");
 // Access the Redis database
 IDatabase db = redis.GetDatabase();
 // Perform Redis operations
 Console.WriteLine("Performing Redis operations...");
 // 1. Set key-value pair
 string key = "SampleKey";
 string value = "Hello from Redis!";
 await db.StringSetAsync(key, value);
 Console.WriteLine($"Set: {key} => {value}");
 // 2. Get the value for the key
 string savedValue = await db.StringGetAsync(key);
 Console.WriteLine($"Get: {key} => {savedValue}");
 // 3. Set an expiration for the key
 TimeSpan expiryTime = TimeSpan.FromSeconds(10);
 await db.KeyExpireAsync(key, expiryTime);
 Console.WriteLine($"Set expiration for {key}: {expiryTime.TotalSeconds} seconds");
 // 4. Check key existence after expiration
 Console.WriteLine("\nWaiting for the key to expire...");
 await Task.Delay(12000); // Wait 12 seconds
 bool exists = await db.KeyExistsAsync(key);
 Console.WriteLine($"Key Exists After Expiration: {key} => {exists}");
 // Close the connection
 redis.Close();
 Console.WriteLine("\nAll Redis operations completed.");
 }
 }
}

3단계. 애플리케이션을 실행하세요.

애플리케이션을 실행합니다.

dotnet run

예상 출력

프로그램은 Redis에 연결하고, 기본 키-값 작업을 수행하고, 키 만료를 확인합니다. 다음과 같은 출력이 표시됩니다.

.NET Core에서 Redis 통합 마스터하기:실용 가이드

Redis는 .NET Core와 어떻게 작동하나요?

애플리케이션이 단계별로 수행하는 작업은 다음과 같습니다.

  1. 연결 풀링 및 서버 통신을 관리하는 ConnectionMultiplexer를 사용하여 Redis 서버에 연결합니다.
  2. 기본 명령을 수행합니다.
    • StringSetAsync: Redis에서 키-값 쌍을 설정합니다.
    • StringGetAsync: 키 값을 가져옵니다.
    • KeyExpireAsync: 키의 만료 시간을 설정합니다.
    • KeyExistsAsync: 키가 존재하는지 확인합니다.
  3. 만료된 데이터의 임시 메모리 내 저장을 처리합니다.

Windows 환경에서 작업 중이고 기본 Redis 인스턴스를 설치하거나 Docker를 사용하지 않으려는 경우 대안으로 Redis 호환 서버를 사용할 수 있습니다.

Redis 호환 서버 설정

  • Windows용 Redis 호환 서버를 설치합니다.
  • 설치되면 서버는 일반적으로 Redis와 유사하게 기본적으로 localhost:6379에서 실행됩니다.
  • Redis 호환 서버에서 작동하기 위해 애플리케이션에 코드 변경이 필요하지 않습니다.

Redis 호환 서버를 사용하면 컨테이너나 가상화된 환경에 의존하지 않고 Windows에서 Redis 기능을 기본적으로 실행할 수 있습니다.

.NET Core에서 Redis를 사용할 때의 이점

  1. 실적: Redis는 메모리에서 완벽하게 작동하므로 지연 시간이 매우 짧습니다.
  2. 사용 편의성: 목록, 세트, 해시와 같은 추가 데이터 구조를 갖춘 일반적인 키-값 요구 사항을 위한 단순화된 API입니다.
  3. 유연성: Redis는 다양한 목적(예:캐싱, 메시지 대기열, 게시/구독)을 제공합니다.
  4. 확장성: Redis는 수요에 따른 확장을 위해 클러스터링과 고가용성을 지원합니다.

결론

Redis를 .NET Core 애플리케이션에 통합하면 까다로운 워크로드를 처리할 수 있는 고품질의 고성능 시스템을 구축할 수 있습니다. StackExchange.Redis 라이브러리를 사용하면 Redis와 원활하게 상호 작용할 수 있습니다.

간단한 캐싱 또는 세션 관리를 위해 Redis를 구현하는 것부터 시작하고 분산 .NET Core 애플리케이션의 게시/구독 및 실시간 데이터 요구 사항에 맞게 사용을 확장하세요.

즐거운 코딩과 확장을 즐겨보세요!