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;
}
}
ServiceStack.Redis 的 ASP.NET Core 扩展库的更多相关文章
- Log4net 的 ASP.NET Core 扩展库
给大家安利一款 log4net 的 ASP.NET Core 扩展库,它是基于 log4net 开发的. 简单易用,开源免费,使用ASP.NET Core自身提供的DI容器来实现服务的注册和消费.直接 ...
- ASP.NET Core扩展库
亲爱的.Neter们,在我们日复一日的编码过程中是不是会遇到一些让人烦恼的事情: 日志配置太过复杂,各种模板.参数也搞不清楚,每次都要去查看日志库的文档,还需要复制粘贴一些重复代码,好无赖 当需要类型 ...
- ASP.NET Core扩展库之日志
上一篇我们对Xfrogcn.AspNetCore.Extensions扩展库功能进行了简单的介绍,从这一篇文章开始,我将逐步介绍扩展库中的核心功能. 日志作为非业务的通用领域基础功能, ...
- ASP.NET Core扩展库之Http通用扩展
本文将介绍Xfrogcn.AspNetCore.Extensions扩展库对于Http相关的其他功能扩展,这些功能旨在处理一些常见需求, 包括请求缓冲.请求头传递.请求头日志范围.针对HttpClie ...
- ASP.NET Core扩展库之Http请求模拟
如今,完全独立的业务应用几乎不存在,不管是在企业内部微服务之间的调用,还是与外部第三方服务的调用,Http的API交互是常见的场景,这些实际情况给我们的开发带来了比较大的挑战,一是第三方服务可能会牵制 ...
- ASP.NET Core扩展库之实体映射
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但Au ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- asp.net core实时库:SignalR(1)
SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...
- Redis 入门与 ASP.NET Core 缓存
目录 基础 Redis 库 连接 Redis 能用 redis 干啥 Redis 数据库存储 字符串 订阅发布 RedisValue ASP.NET Core 缓存与分布式缓存 内存中的缓存 ASP. ...
随机推荐
- spring boot:使用log4j2做异步日志打印(spring boot 2.3.1)
一,为什么要使用log4j2? log4j2是log4j的升级版, 升级后更有优势: 性能更强/吞吐量大/支持异步 功能扩展/支持插件/支持自定义级别等 这些优 ...
- visio2016激活 试用版
输入秘钥: W9WC2-JN9W2-H4CBV-24QR7-M4HB8 可以成功激活成试用版 有效期30天,30天之后需要你正式激活! 经本人使用完全可以激活,欢迎大家使用! 也欢迎大家支持正 ...
- Spring之AOP(面向切面编程)_入门Demo
AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可 ...
- app反编译遇到360加固,傻瓜式脱壳
转载https://blog.kieng.cn/2051.html 第一步 电脑安装安卓模拟器,我使用的是雷电模拟器(推荐). 第二步 打开模拟器,准备安装软件: 1.需要脱壳的软件 2.XP 框架. ...
- 一起学Vue:CRUD(增删改查)
目标 使用Vue构建一个非常简单CRUD应用程序,以便您更好地了解它的工作方式. 效果页面 比如我们要实现这样列表.新增.编辑三个页面: 列表页面 新增页面 编辑页面 我们把这些用户信息保存到Todo ...
- Flask简介与启动服务器
Flask 一.简介 官方文档:http://flask.pocoo.org/ http://www.pythondoc.com/flask/index.html(中文) 1.概述 flask是一个非 ...
- 浅析 AC 自动机
目录 简述 AC 自动机是什么 AC 自动机有什么用 AC 自动机·初探 AC 自动机·原理分析 AC 自动机·代码实现 AC 自动机·更进一步 第一题 第二题 第三题 从 AC 自动机到 fail ...
- nginx下配置php5和php7
用的是lnmp 一键安装的 php5.6版本网上百度Ubuntu安装多版本PHP就行 参考文章原链接:http://blog.csdn.net/21aspnet/article/details/476 ...
- leetcode129valid-parentheses
题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[] ...
- python数据分析01准备工作
第1章 准备工作 1.1 本书的内容 本书讲的是利用Python进行数据控制.处理.整理.分析等方面的具体细节和基本要点.我的目标是介绍Python编程和用于数据处理的库和工具环境,掌握这些,可以让你 ...