소개
Redis는 최신 애플리케이션의 캐싱, 세션 저장, 메시지 브로커링 및 게시/구독 통신에 널리 사용되는 빠른 인메모리 키-값 저장소입니다. 가볍고 성능이 뛰어나며 개발자 친화적이므로 확장 가능한 시스템을 구축하는 데 적합합니다.
.NET Core에서 개발 중이고 Redis를 애플리케이션에 통합하려는 경우 이 문서에서는 StackExchange.Redis 라이브러리를 사용하여 기본 Redis 작업을 수행하는 방법을 보여줍니다.
Windows 시스템에서 작업하는 경우 Redis 호환 서버를 사용하여 Linux나 컨테이너화 없이 Redis를 실행할 수 있습니다.
왜 Redis인가요?
Redis는 .NET Core 애플리케이션과 통합되면 여러 가지 이점을 제공합니다.
- 캐싱: 자주 액세스하는 데이터를 저장하여 응답 시간을 개선하고 데이터베이스 작업 부하를 줄입니다.
- 세션 관리: 분산 시스템에서 사용자 세션을 효율적으로 처리합니다.
- 실시간 이벤트: 게시/구독 기능에 Redis를 사용하여 알림이나 이벤트 기반 통신과 같은 실시간 기능을 강화하세요.
- 고성능: 메모리에서 작동하여 지연 시간이 짧은 데이터 액세스를 제공합니다.
- 확장 가능: 클러스터링 및 샤딩을 지원하는 Redis는 확장성을 고려하여 구축되었습니다.
Redis 설정
Redis 사용
.NET Core 앱을 Redis에 연결하려면 Redis를 실행하면 됩니다.
- 명령줄 설치: Docker와 같은 도구를 사용하여 Linux 또는 Windows에서 Redis를 실행하세요.
- 사전 구성된 Windows 대안: Windows를 사용하는 경우 Redis를 기본적으로 실행하기 위한 대체 서버로 Redis 호환 서버를 사용할 수 있습니다.
참고. 단순화를 위해 이 튜토리얼에서는 Redis가 localhost:6379에서 로컬로 실행되고 있다고 가정합니다.
Redis를 사용하여 .NET Core 애플리케이션 구축
이 예에서는 다음 Redis 작업을 수행하는 .NET Core 콘솔 애플리케이션을 만듭니다.
- Redis 서버에 연결합니다.
- 기본 키-값 작업(설정, 가져오기, 삭제)을 수행합니다.
- 키 만료 및 유효성 검사를 보여줍니다.
1단계. .NET Core 프로젝트를 만듭니다.
-
터미널을 열고 새 프로젝트를 생성하세요.
dotnet new RedisIntegrationDemo -
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에 연결하고, 기본 키-값 작업을 수행하고, 키 만료를 확인합니다. 다음과 같은 출력이 표시됩니다.

Redis는 .NET Core와 어떻게 작동하나요?
애플리케이션이 단계별로 수행하는 작업은 다음과 같습니다.
- 연결 풀링 및 서버 통신을 관리하는 ConnectionMultiplexer를 사용하여 Redis 서버에 연결합니다.
- 기본 명령을 수행합니다.
- StringSetAsync: Redis에서 키-값 쌍을 설정합니다.
- StringGetAsync: 키 값을 가져옵니다.
- KeyExpireAsync: 키의 만료 시간을 설정합니다.
- KeyExistsAsync: 키가 존재하는지 확인합니다.
- 만료된 데이터의 임시 메모리 내 저장을 처리합니다.
Windows 환경에서 작업 중이고 기본 Redis 인스턴스를 설치하거나 Docker를 사용하지 않으려는 경우 대안으로 Redis 호환 서버를 사용할 수 있습니다.
Redis 호환 서버 설정
- Windows용 Redis 호환 서버를 설치합니다.
- 설치되면 서버는 일반적으로 Redis와 유사하게 기본적으로 localhost:6379에서 실행됩니다.
- Redis 호환 서버에서 작동하기 위해 애플리케이션에 코드 변경이 필요하지 않습니다.
Redis 호환 서버를 사용하면 컨테이너나 가상화된 환경에 의존하지 않고 Windows에서 Redis 기능을 기본적으로 실행할 수 있습니다.
.NET Core에서 Redis를 사용할 때의 이점
- 실적: Redis는 메모리에서 완벽하게 작동하므로 지연 시간이 매우 짧습니다.
- 사용 편의성: 목록, 세트, 해시와 같은 추가 데이터 구조를 갖춘 일반적인 키-값 요구 사항을 위한 단순화된 API입니다.
- 유연성: Redis는 다양한 목적(예:캐싱, 메시지 대기열, 게시/구독)을 제공합니다.
- 확장성: Redis는 수요에 따른 확장을 위해 클러스터링과 고가용성을 지원합니다.
결론
Redis를 .NET Core 애플리케이션에 통합하면 까다로운 워크로드를 처리할 수 있는 고품질의 고성능 시스템을 구축할 수 있습니다. StackExchange.Redis 라이브러리를 사용하면 Redis와 원활하게 상호 작용할 수 있습니다.
간단한 캐싱 또는 세션 관리를 위해 Redis를 구현하는 것부터 시작하고 분산 .NET Core 애플리케이션의 게시/구독 및 실시간 데이터 요구 사항에 맞게 사용을 확장하세요.
즐거운 코딩과 확장을 즐겨보세요!