2020年11月22日星期日

ServiceStack.Redis 的 ASP.NET Core 扩展库

给大家安利一款 ServiceStack.Redis 的 ASP.NET Core 扩展库,它是基于 ServiceStack.Redis.Core 开发的。 简单易用,开源免费,使用ASP.NET Core自身提供的DI容器来实现针对服务的注册和消费。直接在程序启动时注册到服务中即可完成全部配置,对于小白用户也可快速上手Redis缓存和Redis分布式缓存。

Install Package

https://www.nuget.org/packages/ServiceStack.Redis.Extension.AspNetCore

Configure

Startup.cs

Single Server

public void ConfigureServices(IServiceCollection services){ services.AddDistributedServiceStackRedisCache(options => {  // default single server: 127.0.0.1:6379  // services.AddServiceStackRedisCache();    // customize single server  services.AddServiceStackRedisCache(options =>{  	options.SingleServer = "123456@127.0.0.1:6379";  }); }              services.AddControllers();}

Read and write separation

public void ConfigureServices(IServiceCollection services){ services.AddServiceStackRedisCache(options => {  options.ReadWriteServers = new[]  {   "192.168.1.1:6379", "123456@192.168.1.2:6379", "123456@192.168.1.3:6379", "123456@192.168.1.4:6379"  };  options.ReadOnlyServers = new[]  {   "192.168.1.1:6379", "123456@192.168.1.3:6379"  }; }); services.AddControllers();}

Load from configuration

public void ConfigureServices(IServiceCollection services){ services.AddServiceStackRedisCache(Configuration.GetSection("ServiceStackRedisOptions")); services.AddControllers();}

appsettings.Development.json

{ "ServiceStackRedisOptions": { "SingleServer": "1234546@127.0.0.1:6379" }, "Logging": { "LogLevel": {  "Default": "Information",  "Microsoft": "Warning",  "Microsoft.Hosting.Lifetime": "Information" } }}

appsetting.json

{ "ServiceStackRedisOptions": { "ReadWriteServers": ["192.168.1.1:6379", "123456@192.168.1.2:6379", "123456@192.168.1.3:6379", "123456@192.168.1.4:6379"], "ReadOnlyServers": ["192.168.1.1:6379", "123456@192.168.1.3:6379"] }, "Logging": { "LogLevel": {  "Default": "Information",  "Microsoft": "Warning",  "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*"}

ServiceStack.Redis Options

public class ServiceStackRedisOptions{ /// <summary> ///  单机的地址,例如:127.0.0.1:6379(默认值)。如果你只用到一个Redis服务端,那么配置此项即可。 /// </summary> public string SingleServer { get; set; } = "127.0.0.1:6379"; /// <summary> ///  读写的地址,例如:{ "192.168.1.1:6379","123456@192.168.1.2:6379","123456@192.168.1.3:6379","123456@192.168.1.4:6379" } /// </summary> public string[] ReadWriteServers { get; set; } /// <summary> ///  只读地址,例如:{ "192.168.1.1:6379","123456@192.168.1.3:6379" } /// </summary> public string[] ReadOnlyServers { get; set; } /// <summary> ///  MaxWritePoolSize写的频率比读低。默认值 8 /// </summary> public int MaxWritePoolSize { get; set; } = 8; /// <summary> ///  MaxReadPoolSize读的频繁比较多。默认值 12,Redis官方声明最大连接数为1W,但是连接数要控制。 /// </summary> public int MaxReadPoolSize { get; set; } = 12; /// <summary> ///  连接最大的空闲时间。默认值 60,Redis官方默认是240 /// </summary> public int IdleTimeOutSecs { get; set; } = 60; /// <summary> ///  连接超时时间,毫秒。默认值 6000 /// </summary> public int ConnectTimeout { get; set; } = 6000; /// <summary> ///  数据发送超时时间,毫秒。默认值 6000 /// </summary> public int SendTimeout { get; set; } = 6000; /// <summary> ///  数据接收超时时间,毫秒。默认值 6000 /// </summary> public int ReceiveTimeout { get; set; } = 6000; /// <summary> ///  连接池取链接的超时时间,毫秒。默认值 6000 /// </summary> public int PoolTimeout { get; set; } = 6000; /// <summary> ///  默认的数据库。默认值 0,Redis官方默认也是0 /// </summary> public long DefaultDb { get; set; } = 0;}

Usage

WeatherForecastController.cs

[ApiController][Route("[controller]")]public class WeatherForecastController : ControllerBase{ private static readonly string[] Summaries = new[] {  "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; private readonly ILogger<WeatherForecastController> _logger; private readonly IServiceStackRedisCache _redisCache; public WeatherForecastController(ILogger<WeatherForecastController> logger, IServiceStackRedisCache redisCache) {  _logger = logger;  this._redisCache = redisCache; } [HttpGet] public IEnumerable<WeatherForecast> Get() {  var array = _redisCache.Get<WeatherForecast[]>("WeatherForecast");  if (array == null)  {   var rng = new Random();   array = Enumerable.Range(1, 5).Select(index => new WeatherForecast   {    Date = DateTime.Now.AddDays(index),    TemperatureC = rng.Next(-20, 55),    Summary = Summaries[rng.Next(Summaries.Length)]   }).ToArray();   // Cache for 30 minutes   _redisCache.Set("WeatherForecast", array, 60 * 1 * 30);  }  return array; }}








原文转载:http://www.shaoqun.com/a/492759.html

DMM:https://www.ikjzd.com/w/2026

csa认证:https://www.ikjzd.com/w/904

wario:https://www.ikjzd.com/w/887


给大家安利一款ServiceStack.Redis的ASP.NETCore扩展库,它是基于ServiceStack.Redis.Core开发的。简单易用,开源免费,使用ASP.NETCore自身提供的DI容器来实现针对服务的注册和消费。直接在程序启动时注册到服务中即可完成全部配置,对于小白用户也可快速上手Redis缓存和Redis分布式缓存。InstallPackagehttps://www.nu
prime day:prime day
livingsocial:livingsocial
速卖通运营:90%的速卖通卖家走过的五大误区!:速卖通运营:90%的速卖通卖家走过的五大误区!
泉水谷漂流和百丈崖峡谷漂流哪个好玩?泉水谷漂流和百丈崖峡谷:泉水谷漂流和百丈崖峡谷漂流哪个好玩?泉水谷漂流和百丈崖峡谷
如何做好站外推广,这6个步骤你必须知道!:如何做好站外推广,这6个步骤你必须知道!