RedisNet、DetNetコアのための生産準備Redisクライアント
15061 ワード
Githubからそれをダウンロードする
dotnet add package RedisNet
public void ConfigureServices(IServiceCollection services)
{
var redis2ConfigurationOptions = ConfigurationOptions.Parse("localhost:6379");
redis2ConfigurationOptions.ReconnectRetryPolicy = new ExponentialRetry(1000);
services.AddRedisDotNet(new RedisCacheOptions()
{
ConfigurationOptions = redis2ConfigurationOptions,
CompressionOption = new CompressionOption()
{
TriggerByteSize = 100 * 1024
}
});
}
Redisキーの値サイズが100キロバイトを超えたとき、GZIP圧縮アルゴリズムを適用してサイズを小さくし、検索時に自動的にそれを解凍しますので、全体のプロセスはクライアントの視点から透明です.圧縮はネットワークを通してデータパケットのサイズを減少させます、したがって、REDIS呼び出しのパフォーマンスは50 %増加します.レガックスによる
Nuget
圧縮ベンチマーク結果
BenchmarkDotNet=v0.12.1, OS=macOS 11.3 (20E232) [Darwin 20.4.0]
Intel Core i7-9750H CPU 2.60GHz, 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.201
[Host] : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT DEBUG
方法平均
エラー
stddev
ジェン0
ジェン1
ゲン2
割り当てた
圧縮
668.2 ms
13.34 ms
18.24 ms
-
-
-
4.88 MB
を返します.
1387.1 ms
26.92 ms
37.74 ms
-
-
-
2.39 MB
使用方法1
シングルREDISサーバ
前提条件
docker run --name redis1 -d -p 6379:6379 redis redis-server --appendonly yes
public void ConfigureServices(IServiceCollection services)
{
var redis2ConfigurationOptions = ConfigurationOptions.Parse("localhost:6379");
redis2ConfigurationOptions.ReconnectRetryPolicy = new ExponentialRetry(1000);
services.AddRedisDotNet(new RedisCacheOptions()
{
ConfigurationOptions = redis2ConfigurationOptions
});
}
public class TestController : Controller
{
private readonly IRedisService _redisService;
public TestController(IRedisService redisService){
_redisService = redisService;
}
public IActionResult Get(string key){
var result = _redisService.GetString(key);
return OK(result);
}
public async Task<IActionResult> GetAsync(string key){
var result = await _redisService.GetStringAsync(key);
return OK(result);
}
}
使用方法2
複数のREDISサーバ
前提条件
docker run --name redis1 -d -p 6379:6379 redis redis-server --appendonly yes
docker run --name redis2 -d -p 6380:6380 redis redis-server --appendonly yes
public void ConfigureServices(IServiceCollection services)
{
var redis1ConfigurationOptions = ConfigurationOptions.Parse("localhost:6379");
redis1ConfigurationOptions.ReconnectRetryPolicy = new ExponentialRetry(1000);
services.AddRedisDotNet<Redis1>(new RedisCacheOptions()
{
ConfigurationOptions = redis1ConfigurationOptions
});
var redis2ConfigurationOptions = ConfigurationOptions.Parse("localhost:6380");
redis2ConfigurationOptions.ReconnectRetryPolicy = new ExponentialRetry(1000);
services.AddRedisDotNet<Redis2>(new RedisCacheOptions()
{
ConfigurationOptions = redis2ConfigurationOptions
});
}
public class Redis1 : RedisService<Redis1>
{
public Redis1(IOptionsMonitor<RedisCacheOptions> cacheOptions) : base(cacheOptions)
{
}
}
public class Redis2 : RedisService<Redis2>
{
public Redis2(IOptionsMonitor<RedisCacheOptions> cacheOptions) : base(cacheOptions)
{
}
}
public class Redis1Controller : ControllerBase
{
private readonly Redis1 _redis1;
public Redis1Controller(Redis1 redis1)
{
_redis1 = redis1;
}
[HttpGet]
public async Task<IActionResult> Get()
{
return Ok(await _redis1.GetStringAsync("redis1"));
}
}
public class Redis2Controller : ControllerBase
{
private readonly Redis2 _redis2;
public Redis2Controller(Redis2 redis2)
{
_redis2 = redis2;
}
[HttpGet]
public async Task<IActionResult> Get()
{
return Ok(await _redis2.GetStringAsync("redis2"));
}
}
からそれをダウンロードする
dotnet add package RedisNet --version 1.1.0
ハッピーコーディングReference
この問題について(RedisNet、DetNetコアのための生産準備Redisクライアント), 我々は、より多くの情報をここで見つけました https://dev.to/alialp/redisnet-production-ready-redis-client-for-dotnet-core-2a1pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol