• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ServiceStack.Redis的ASP.NETCore扩展库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

给大家安利一款 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 = "[email protected]:6379";
        });
    }
                                                  
    services.AddControllers();
}

Read and write separation

public void ConfigureServices(IServiceCollection services)
{
    services.AddServiceStackRedisCache(options =>
    {
        options.ReadWriteServers = new[]
        {
            "192.168.1.1:6379", "[email protected]:6379", "[email protected]:6379", "[email protected]:6379"
        };
        options.ReadOnlyServers = new[]
        {
            "192.168.1.1:6379", "[email protected]:6379"
        };
    });

    services.AddControllers();
}

Load from configuration

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

    services.AddControllers();
}

appsettings.Development.json

{
  "ServiceStackRedisOptions": {
    "SingleServer": "[email protected]:6379"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}

appsetting.json

{
  "ServiceStackRedisOptions": {
    "ReadWriteServers": ["192.168.1.1:6379", "[email protected]:6379", "[email protected]:6379", "[email protected]:6379"],
    "ReadOnlyServers": ["192.168.1.1:6379", "[email protected]: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","[email protected]:6379","[email protected]:6379","[email protected]:6379" }
    /// </summary>
    public string[] ReadWriteServers { get; set; }

    /// <summary>
    ///     只读地址,例如:{ "192.168.1.1:6379","[email protected]: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;
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
CSDN - 读书频道 - 精通ASP.NET 2.0企业级项目开发发布时间:2022-07-10
下一篇:
(转)动态管理ASP.NETDataGrid数据列发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap