출처 : 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
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();
'ASP.NET Core' 카테고리의 다른 글
.NET 6 API with Redis] 4. API using Hashes Data Type (0) | 2022.05.18 |
---|---|
.NET 6 API with Redis] 3. Model , Repository, Controller구성 (0) | 2022.05.18 |
.NET 6 API with Redis] 1. Redis란? (0) | 2022.05.18 |
ASP.NET Core] Model Binding 모델 바인딩 (0) | 2022.02.03 |
ASP.NET Core] Form Tag Helper, Environment Tag Helper (0) | 2022.01.25 |
댓글