
리디스는 서버의 메모리로 제이슨 형태의 데이터를 해당 데이터의 키와 함께 저장합니다. 서버 측 메모리를 활용하기 때문에 데이터베이스의 부하를 주지 않고, 속도가 빠르며, 로컬스토리지와 달리 데이터에 대한 통제력을 가지기 때문에 데이터를 활용할 수 있는 장점이 있는데요. 리디스를 활용하는 방법을 보겠습니다.
장점
- 빠른 속도
- 데이터에 대한 통제력
- 데이터 지속성 (자동으로 주기적으로 스냅샷을 통해 데이터를 저장하여 서버가 다운되더라도 저장된 스냅샷을 통해 데이터가 지속됨)
- 데이터 저장 기간 설정가능
프로젝트 설정
에이피아이 프로젝트 생성
.NET 웹 에이피아이 생성하기
개발도구 설치하기 .NET을 이용하여 웹애플리케이션을 만들기 위해서는 .NET에서 제공하는 개발도구가 필요합니다. 개발도구 다운로드는 아래 링크에서 가능합니다. .NET | Free. Cross-platform. Open Sour
jin-co.tistory.com
닥커 설치
닥커?
애플리케이션이 글로벌 환경에서 작동하기 위해서는 버전, 설정 등 기본적인 구성이 일치해야 하는데요 닥터는 애플리케이션 작동에 필요한 구성요소를 패키지로 묶어 추가 설정 없이 작동하
jin-co.tistory.com
리디스 설정
아래 파일을 다운로드하여 프로젝트 루트에 저장합니다
services:
redis:
image: redis:latest
ports:
- 6379:6379
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis-data:/data
redis-commander:
image: rediscommander/redis-commander:latest
environment:
- REDIS_HOSTS=local:redis:6379
- HTTP_USER=root
- HTTP_PASSWORD=secret
ports:
- 8081:8081
depends_on:
- redis
volumes:
redis-data:

닥커 데스크톱을 열고 컨테이너를 실행

편집기로 이동하여 콘솔에 아래 명령어 실행
docker-compose up

구현하기
패키지 설치
누겟갤러리를 열고 아래 패키지를 설치합니다
StackExchange.Redis

환경변수 설정
환경변수 활용을 위해 appsettings 파일을 열고 리디스 연결문을 생성합니다

서비스 설정
Program.cs 파일에서 아래와 같이 리디스를 서비스로 등록합니다
builder.Services.AddSingleton<IConnectionMultiplexer>(c =>
{
var opt = ConfigurationOptions.Parse(builder.Configuration.GetConnectionString("Redis"));
return ConnectionMultiplexer.Connect(opt);
});

사용하기
리디스를 활용하여 장바구니 에이피아이를 설정해 보겠습니다
엔티티생성
먼저 장바구니 엔티티를 생성하고

장바구니 아이디와 아이템 속성을 추가합니다. 이때, 아이디는 스트링 타입으로 합니다

장바구니 아이템 엔티티를 생성하고 필요한 속성을 추가합니다

다시 장바구니 엔티티로 이동하여 컨스트럭터를 추가하고 장바구니 아이템 초기값을 설정합니다

컨트롤러생성
장바구니 엔드포인트 설정을 위해 컨트롤러를 생성하고

컨스트럭터를 추가하고 리디스를 인젝션 합니다

▶ 장바구니 목록
[HttpGet]
public async Task<ActionResult<Basket>> GetBasket(string id)
{
var data = await _db.StringGetAsync(id);
var basket = data.IsNullOrEmpty ? null : JsonSerializer.Deserialize<Basket>(data);
return basket ?? new Basket(id);
}
▶ 장바구니 추가 및 수정하기
[HttpPost]
public async Task<ActionResult<Basket>> UpdateBasket(Basket basket)
{
var UpdatedBasket = await _db.StringSetAsync(basket.Id, JsonSerializer.Serialize(basket), TimeSpan.FromDays(10));
if (UpdatedBasket) return null;
return await GetBasket(basket.Id);
}
▶ 장바구니 삭제
[HttpDelete]
public async Task DeleteBasket(string id)
{
await _db.KeyDeleteAsync(id);
}

테스트하기
작업이 완료되면 API 폴더로 이동하여
cd /API
아래 명령어로 앱을 실행하여 데이터베이스를 생성합니다.
dotnet watch
닥커를 실행하고

리디스 커맨더를 엽니다

▶ 장바구니 추가


▶ 장바구니 목록

▶ 장바구니 삭제


이상으로 리디스를 사용하는 방법을 보았습니다.
'백엔드 > 닷넷' 카테고리의 다른 글
닷넷 / 앵귤러 배포 - 리눅스 (0) | 2023.05.23 |
---|---|
지네릭 패턴 - 유닛 오브 워크 (0) | 2023.05.16 |
웹 에이피아이 폴더구조 및 개발환경 설정하기 (2) | 2023.05.07 |
사용자관리 - 아이덴티티 (0) | 2023.05.01 |
브라우저 접근 허용하기 (3) | 2023.04.25 |