.NET Core中EF Core如何集成Redis?

iAm_Ike 2020-06-26 09:12:21
如何实现(扩展)EFCORE在访问数据库时中间使用Redis做缓存查询?
...全文
2874 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_36000833 2020-06-27
  • 打赏
  • 举报
回复
1、Visual Studio 2019新建一个asp.net core项目,选择Api模板。项目应包含一个示例的WeatherForecastController。 2、编辑WeatherForecastController.cs,添加一个IDistributedCache成员,并引入命名空间。 ... using Microsoft.Extensions.Caching.Distributed; [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 IDistributedCache _cache; public WeatherForecastController(ILogger<WeatherForecastController> logger, IDistributedCache cache) { _logger = logger; _cache = cache; } 3、安装nuget包 Microsoft.Extensions.Caching.StackExchangeRedis,当前版本为3.1.5。 4、该nuget包提供了StackExchangeRedis客户,并可以提供了IDistributedCache服务。 5、编辑Startup.cs,注入IDistributedCache服务,其中“redis-server:6379”要换成你可以使用的Redis服务器地址。 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddStackExchangeRedisCache(options => options.Configuration = "redis-server:6379"); } 6、这样就可以使用Redis提供的缓存了。比如,你可以改写WeatherForecastController下的IEnumerable<WeatherForecast> Get() Api,应用缓存服务: [HttpGet] public IEnumerable<WeatherForecast> Get() { const string cacheKey = "my-weather-forecast"; var cacheOneMinute = new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(1) }; var json = _cache.GetString(cacheKey); if (json == null) { var rng = new Random(); var list = 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(); json = JsonConvert.SerializeObject(list); _cache.SetString(cacheKey, json, cacheOneMinute); } return JsonConvert.DeserializeObject<IEnumerable<WeatherForecast>>(json); } 7、运行程序,刷新页面,可以观察到缓存结果,例子中为一分钟。一分钟内刷新,结果将不会改变。
  • 打赏
  • 举报
回复
最基本的语义就是,例如我写
var obj = Common.Program.Conn.GetGrain<IStock>(code);
obj.盘点(record);
这表示了这个盘点代码是部署在网络众多服务器上的程序,我可以将1万个存货分别、并发、异步地与5000个盘点记录进行比对处理,每一种类的存货都有自己的盘点程序,分别由不同的开发商(或者程序员)开发,开发完随时增量部署到网络服务器中。而我的“客户端程序”只是自然而然地通过分布式缓存对象来调用网络上的分布式计算能力,而不是过分简单地反复阻塞网络带宽进行“增删改查”。
  • 打赏
  • 举报
回复
.net 如何储存和查询 redis 可以很容易查询到许多资料,必经它特别简单。

redis 是非常鸡肋的,它只是比 SQL Server 稍微简单一点点儿,能表达的东西根本不是对象,而只是结构简单地数据记录,程序员却需要额外编写很多代码。

.net 程序中我们使用缓存,最关键地,不管是本地缓存还是网络分布式缓存,第一是“有状态的面向对象的”,第二是“自动管理集群和路由”的,缓存是面向对象的,带有状态的,自动将c#业务逻辑代码部署到对象那里去的。当面对的高并发需求和系统复杂度到了一定级别时,才能知道这种真正分布式的系统的必要性。而不为了过分简单的数据找个带有昂贵的内存条的主机去“缓存”。
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧