Client programming c#
์ด๋ฒ์๋ redis์ sentinel์ client์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
redis standalone ์ฌ์ฉํ๊ธฐ
cd standalone
docker-compose up -d๋ด ์ปดํจํฐ์ 6379 ํฌํธ๋ก redis๊ฐ ์คํ๋์์ต๋๋ค.
์ด์ c# ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณด์.
https://redis.io/docs/connect/clients/dotnet/ ์ฐธ๊ณ ํ๋ค.
dotnet add package NRedisStackusing Microsoft.AspNetCore.Mvc;
using NRedisStack;
using NRedisStack.RedisStackCommands;
using StackExchange.Redis;
namespace ThreadTest.Controllers;
[ApiController]
[Route("values")]
public class ValuesController : ControllerBase
{
private readonly ILogger<ValuesController> _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
[HttpGet]
public OkResult Get()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
System.Console.WriteLine(db.Database.ToString());
db.StringSet("foo", "bar");
Console.WriteLine(db.StringGet("foo")); // prints bar
return Ok();
}
}
...
curl http://localhost:5007/value

bar๋ฅผ ์ฐ๋๊ฑธ ๋ณผ์์๋ค ๋ก์ปฌ์ ์๋ ๋ ๋์ค์ ์ ์ฅ์ด ๋๊ณ ๊ทธ ๊ฐ์ ๊ฐ์ ธ์จ๊ฒ์ด๋ค.
cli๋ก ํ์ธํด๋ณด์.
```sh
docker run -it --rm bitnami/redis:7.2 redis-cli -h host.docker.internal -p 6379
get foo
๊ฒฐ๊ณผ๊ฐ ์ ๋์จ๋ค.
์ด ์ฝ๋๋ฅผ ์ถ๊ฐํด์ ์คํํด๋ณด์.

์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
redis replica(main-secondary) ์ฌ์ฉํ๊ธฐ

main
6379
secondary-1
6380
secondary-2
6381
๋ชจ๋ ๋ ธ๋๋ฅผ ,๋ก ๊ตฌ๋ถํด์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์๋์ผ๋ก master๋ฅผ ์์๋ด์ ๊ทธ๊ณณ์๋ค ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์์ผ์ค๋ค. ์ฝ๊ธฐ๋ ์๋์ผ๋ก secondary์์ ์ฝ์ด์จ๋ค.

database๋ 0๋ฒ์ด๊ณ ๊ฐ์ bar์ด๊ณ endpoint๋ localhost:6379์ด๋ค.
replica์์ ํ์ธํด๋ณด์.

replica์์๋ ๊ฐ์ด ์ ์ ๋ ฅ๋์๋ค.
db๋ฅผ ์ ํํ์ง
๋ ๋์ค ์๋ฒ๋ ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง ์ ์๋ค.
๊ธฐ๋ณธ ๊ฐ์ 16์ด๋ค.
DB ๋ฒํธ 0๋ถํฐ 15๊น์ง 16๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋๋ค.
ํ์ธํ๋๋ฒ

๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ
code์์ db๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ
redis sentinel ์ฌ์ฉํ๊ธฐ
sentinel์ service name์ด๋ผ๋ ๊ฒ์ด ์๋ค ํ์ธํด๋ณด์.

mymaster๊ฐ ์ด๋ฆ์ด๋ค.
connection string์ ์๋น์ค ์ด๋ฆ์ ์ง์ ํ๋ฉด sentinel ๋ชจ๋๊ฐ ์คํ

๋์ํ๋ค.
redis cluster ์ฌ์ฉํ๊ธฐ
์ด๋ ๊ฒ ํ๋ฉด ๋์ํ๋ค.
todo
์ผ๋ฐ์ ์ผ๋ก ์ด๋ ๊ฒ ์ฝ๋ฉํ๋๋ฐ ์ด๋ฌ๋ฉด connection์ ๋งค๋ฒ ๋งบ๋๋ค. ๋ฌธ์ ๊ฐ ๋๋ค.
๊ผญ Async๋ฅผ ์ฌ์ฉํ๊ธฐ ๋ฐ๋๋ค.
์ฐธ๊ณ
connection string์ ์ธ์ ์๋ ์ถ๊ฐ ์ต์
๋ค
https://stackexchange.github.io/StackExchange.Redis/Configuration#configuration-options
Last updated
Was this helpful?