Nuget에서 StackExchange 설치하기
.Net 개발환경에서 제공하는 패키지 관리 시스템인 Nuget을 이용해서 간단하게 .Net 환경에서 레디스를 사용할 수 있다. 아래의 과정을 따라서 진행해 보자.
프로젝트 선택 -> 오른쪽 마우스 클릭 -> Nuget 패키지 관리 선택 -> 찾아보기에서 'StackExchange.Redis'로 검색해서 해당 패키지를 다운로드 및 설치해 주자.
appsettings.json에 redis 세팅 저장하기
이제 StackExchange 패키지를 사용하면 레디스를 쉽게 사용하는 게 가능하다. StackExchange를 초기화하는 부분에서 redis의 위치를 지정해줘야 한다. 이때 직접 문자열로 해당 위치를 지정할 수도 있지만 appsettings.json을 읽어서 해당 정보를 가져오는 구조가 더 올바른 구조이기 때문에 이전 포스팅을 참고해서 redis의 위치를 지정해 보자.
// appsettings.json 파일
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"AppSettings": {
"AppName": "MyAppName",
"AppVersion": 1.0
},
"Redis": {
"ConnectionString": "localhost:6379"
}
}
C# 웹앱에서 appsettings.json 설정값 사용하기
appsettings.json프로젝트 세팅을 읽는 가장 보편적인 방식은 JSONConfigurationProvider를 사용하는 것이다.이 제공자는 appsettings.json 파일에 정의된 설정값들을 앱에 제공한다. 이 파일은 프로젝트가 빌드
jettstream.tistory.com
RedisHelpler 클래스
RedisHelper 클래스 생성자에서 redisSetting 객체를 이용해서 ConnectionString을 가져와서 레디스의 초기화를 진행하였다.
using Microsoft.Extensions.Options;
using redis_test;
using StackExchange.Redis;
using System.Text.Json;
public class RedisHelper
{
private readonly ConnectionMultiplexer _redis;
private readonly IDatabase _database;
public RedisHelper(IOptions<RedisSetting> redisSetting)
{
// 문자열을 직접 입력하는 방식이 아닌 redisSetting 객체를 가져와서 해당 값으로 설정
_redis = ConnectionMultiplexer.Connect(redisSetting.Value.ConnectionString);
_database = _redis.GetDatabase();
}
// Save an object to Redis
public void SetObject<T>(string key, T value, TimeSpan? expiry = null)
{
string json = JsonSerializer.Serialize<T>(value);
_database.StringSet(key, json, expiry);
}
// Retrieve an object from Redis
public T? GetObject<T>(string key)
{
var value = _database.StringGet(key);
if (value.IsNullOrEmpty)
{
return default;
}
return JsonSerializer.Deserialize<T>(value);
}
}
RedisSetting 클래스
public class RedisSetting
{
public string ConnectionString { get; set; } = "";
}
Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
// 1. Access IConfiguration from HostContext
IConfiguration configuration = context.Configuration;
// 2. Bind "AppSettings" section to AppSettings class
services.Configure<RedisSetting>(configuration.GetSection("Redis"));
// 3. Add additional services (example)
services.AddTransient<IMyService, MyService>();
services.AddSingleton<RedisHelper>(); // 싱글톤으로 레디스 객체 추가
// 4. Add a hosted service for demonstration
services.AddHostedService<MyHostedService>();
});
}
MyService.cs
redisHelpler를 이용해서 객체를 레디스에 문자열로 저장하고 해당 문자열을 다시 키값으로 읽어와서 객체로 복원하는 일련이 과정이 가능해졌다.
public interface IMyService
{
void DisplaySettings();
}
public class MyService : IMyService
{
private readonly RedisHelper _redisHelper;
public MyService(RedisHelper redisHelper)
{
// singleton으로 등록했기때문에 의존성 주입이 가능하다.
_redisHelper = redisHelper;
}
public void DisplaySettings()
{
_redisHelper.SetObject<Employee>("1", new Employee()
{
Id = 1,
Name = "Sujan Kay",
Department = "Human Resource",
JoiningDate = DateTime.UtcNow
});
var result = _redisHelper.GetObject<Employee>("1");
if (result == null) return;
Console.WriteLine(result.Id);
Console.WriteLine(result.Name);
Console.WriteLine(result.Department);
Console.WriteLine(result.JoiningDate);
}
}
redis에서 직접 해당 키로 조회
redis-cli에 직접 접근해서 해당하는 키로 문자열을 조회하면 json 형식으로 저장된 문자열을 직접 확인하는 게 가능하다.
위에 예제에서 key값 1로 저장했기 때문에 1로 조회하자.
$ docker exec -it {컨테이너-이름} redis-cli
$ get 1
함께 읽으면 좋은 글
도커(Docker)로 레디스(redis) 실행하기
항상 동일한 환경으로 레디스 실행하기 메모리에 상주하는 레디스(Redis)는 인메모리 방식으로 다른 RDS와 다르게 엄청난 속도를 보장한다. 이런 레디스를 항상 동일한 환경으로 배포해보자. 도커
jettstream.tistory.com
도커로 설치한 Redis CLI로 접근하기
도커에 redis 이미지가 있는지 확인하기우선 redis가 이미지가 있어야 한다. 현재 어떤 이미지를 가지고 있는지 확인해 보자.$ docker imagesredis 이미지가 있다면 그대로 진행하고 redis 이미지가 없다
jettstream.tistory.com
C# 간단하게 Json 형식 파싱하기
간단하게 C#으로 Json 형식 파싱하기웹 관련으로 일을 하다보면 Json을 많이 접하겠지만 웹과 거리가 있다보면 Json을 다루는 일은 많지 않다고 생각된다. 간단하게 C#의 System.Text.Json을 이용해서 Json
jettstream.tistory.com
'프로그래밍 > C#' 카테고리의 다른 글
C# 컴퓨터가 문자를 표현하는 방법, 문자 인코딩 (0) | 2025.02.20 |
---|---|
C# 폴더 안에 있는 모든 파일 찾기 (0) | 2025.01.23 |
C# 웹앱에서 appsettings.json 설정값 사용하기 (0) | 2025.01.07 |
C# 업그레이드된 자동 구현 속성(Auto-Implement Property)에 대해서 (0) | 2024.12.29 |
C# Count vs Count() 차이에 대해서 (0) | 2024.12.16 |
댓글