본문 바로가기
ASP.NET Core

.NET 6 API with Redis] 2. docker를 사용해서 redis 컨테이너 구성

by Fastlane 2022. 5. 18.
728x90
반응형

출처 : https://dotnetplaybook.com/redis-as-a-primary-database/

 

개발환경 : Visual Studio Code, .NET 6.0 SDK, Docker

 

1. VSCode에서 ASP.NET Core Web API 템플릿을 선택하여 프로젝트를 생성한다. 

redis를 docker를 사용해서 세팅해보자. 

 

window에서 docker 설치방법은 아래 글을 참조하자. 

https://bigexecution.tistory.com/122

 

Windows 10] Docker Desktop 설치

Docker Desktop이란? Docker Desktop은 윈도우나 맥 환경에서 컨테이너화된 어플리케이션 또는 microservice를 생성할 수 있도록 해주는 설치 어플리케이션이다. Docker Desktop은 Docker Engine, Docker CLI clie..

bigexecution.tistory.com

 

2. docker-compose.yaml파일을 추가하고, 아래와 같이 입력한다. 

version: '3.8'
services:
  redis:
    image: redis
    container_name: redis_cache
    ports:
      - "6379:6379"

 

3. 도커 컨테이너(redis server) 생성 및 시작

TERMINAL에 아래의 명령어를 실행한다. 

PS C:\Users\admin\source\repos\RedisAPI\RedisAPI> docker compose up -d
[+] Running 7/7
 - redis Pulled                                                                                                                                    8.5s
   - 1fe172e4850f Pull complete                                                                                                                    3.0s
   - 6fbcd347bf99 Pull complete                                                                                                                    3.1s
   - 993114c67627 Pull complete                                                                                                                    3.2s
   - 90ee703e9ece Pull complete                                                                                                                    3.6s
   - 80d8b53e83a7 Pull complete                                                                                                                    3.6s
   - a09780893e15 Pull complete                                                                                                                    3.7s
[+] Running 2/2
 - Network redisapi_default  Created                                                                                                               0.0s
 - Container redis_cache     Started                                                                                                               1.2s

docker Container가 생성되고 실행된 것을 확인할 수 있다. 

 

docker ps를 실행하면, running container를 확인할 수 있다. 

PS C:\Users\admin\source\repos\RedisAPI\RedisAPI> docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED       STATUS       PORTS                    NAMES      
c018df5d5a1a   redis     "docker-entrypoint.s…"   6 hours ago   Up 6 hours   0.0.0.0:6379->6379/tcp   redis_cache

 

4. Docker Plugin을 설치한다. 

 

Docker를 클릭하면 우측에 Container와 Image를 확인할 수 있고, 명령어를 실행하는 대신, 우측마우스를 클릭하여 Container를 시작, 정지, 삭제 등을 할 수 있다. 

 

docker compose up -d : 시작

docker compose stop : 정지

 

 

 

 

 

 

 

 

 

 

 

docker ps 명령어로 CONTAINER ID를 확인한 다음, docker exec -it <CONTAINER ID> /bin/bash 명령어를 실행하여 해당 컨테이너에 접속하여 bash shell을 사용할 수 있다. 

PS C:\Users\admin\source\repos\RedisAPI\RedisAPI> docker exec -it c018df5d5a1a /bin/bash
root@c018df5d5a1a:/data# redis-cli
127.0.0.1:6379> ping
PONG

Redis 원격서버에 명령어를 실행하기 위해서, redis-cli로 Redis client를 시작한다. Redis server와 연결된 후, PING 명령어를 실행하여 server의 실행여부를 확인할 수 있다. 

 

5. redis cli 명령어를 실행하여, redis db에 데이터를 crud 해보자. 

127.0.0.1:6379> set platform:10010 Docker
OK
127.0.0.1:6379> get platform:10010
"Docker"
127.0.0.1:6379> set platform:10010 Redis //기존 데이터를 overwrite한다. 
OK
127.0.0.1:6379> get platform:10010
"Redis"
127.0.0.1:6379> del platform:10010
(integer) 1
127.0.0.1:6379> del platform:10010
(integer) 0
127.0.0.1:6379> get platform:10010
(nil)
127.0.0.1:6379> exit //redis-cli를 종료한다. 
root@c018df5d5a1a:/data# exit
exit
PS C:\Users\admin\source\repos\RedisAPI\RedisAPI>

 

6. .NET 6 API와 Redis를 연결해보자. 

  • Package 설치

1. Microsoft.Extensions.Caching.StackExchangeRedis

           dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis

2. StackExchange.Redis

3. IConnectionMultiplexer

 

  • ConnectionStrings을 설정하자. 

appsettings.Development.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "RedisConnection": "127.0.0.1:6379"
  }
}

 

  • IConnectionMultiplexer 등록하자. 

Program.cs

using StackExchange.Redis;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddSingleton<IConnectionMultiplexer>(opt => 
    ConnectionMultiplexer.Connect(builder.Configuration.GetConnectionString("RedisConnection")));

builder.Services.AddControllers();

var app = builder.Build();

 

728x90
반응형

댓글