tnblog
首页
视频
资源
登录

.netCore 使用分布式缓存(docker+redis)

8628人阅读 2019/12/22 16:45 总访问:3464696 评论:0 收藏:1 手机
分类: .net后台框架


1. 通过docker创建 Redis


执行命令:

  1. docker run --name asp-redis -p 6379:6379 -d redis

查看redis状态:

  1. docker ps



可以发现 already working


2. 创建项目 DistributedRedisDemo





我们可以看到这里有建好的迁移,我们只需要修改一下 appsetting.json 的连接字符串

添加好我们需要的模型,且在ApplicationDbContext.cs添加好DBset

执行命令:

  1. Update-Database


3. 添加 redis 分布式依赖库


Microsoft.Extensions.Caching.Redis


  1. //依赖注入分布式redis服务
  2. //依赖注入分布式redis服务
  3. services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect("localhost"));
  4. services.AddDistributedRedisCache(option =>
  5. {
  6.     option.Configuration = "localhost";
  7.     //实例名称
  8.     option.InstanceName = "RedisDemoInstance";
  9. });


HomeController.cs

  1. private readonly IConnectionMultiplexer _redis;
  2. private readonly IDistributedCache _distributedCache;
  3. private readonly IDatabase _db;
  4. public HomeController(IConnectionMultiplexer redis,IDistributedCache distributedCache) 
  5. {
  6.     //分布式缓存使用方式
  7.     _distributedCache = distributedCache;
  8.     //非分布式缓存使用方式
  9.     _redis = redis;
  10.     _db = _redis.GetDatabase();
  11. }
  12. public IActionResult Index()
  13. {
  14.     var value = _distributedCache.Get("name-key");
  15.     //当name没有值
  16.     if (value == null)
  17.     {
  18.         //值
  19.         var obj = new Dictionary<stringstring> { 
  20.             ["FirstName"] = "Nick",
  21.             ["LastName"] = "Carter"
  22.         };
  23.         //json序列化
  24.         var str = JsonConvert.SerializeObject(obj);
  25.         //编码
  26.         byte[] encoded = Encoding.UTF8.GetBytes(str);
  27.         //缓存实例化
  28.         var options = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(30));
  29.         
  30.         _distributedCache.Set("name-key", encoded, options);
  31.         return View("Index", obj);
  32.     }
  33.     else
  34.     {
  35.         var str = Encoding.UTF8.GetString(value);
  36.         var obj = JsonConvert.DeserializeObject<Dictionary<stringstring>>(str);
  37.         return View("Index",obj);
  38.     }
  39. }

Index.cshtml

  1. @model Dictionary<string, string>
  2. @{
  3.     ViewData["Title"] = "Home Page";
  4. }
  5.     <div class="text-center">
  6.         <h1 class="display-4">Welcome:</h1>
  7.         @foreach (var kv in Model)
  8.         {
  9.             <h3>
  10.                 @kv.Key : @kv.Value
  11.             </h3>
  12.         }
  13.     </div>

Result:

Than:

Than 30秒后:



欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

.netcore 使用缓存

1.Startup.csservices.AddMemoryCache(); services.AddMvc();2.封装Logger类[Route(&quot;api/todo&quot;)] [Authorize] ...

.netcore3.0 Ocelot 制作简单负载均衡 (一)

开发环境环境版本:vs2019框架版本:.netCore 3.0注意:.netCore 3.1 Ocelot 暂时不支持我这种方式!1.项目创建创建的项目...

.netcore3.1 Abp+vue 实战 (一)

ABP前言一个应用程序框架和起点的ASP.NET MVC web应用程序与最佳实践和最流行的工具!(它是这样说的)1.项目的创建创建项...

.netcore3.1 consul服务集群

前言Consul是一种服务网络解决方案,可跨任何运行时平台以及公共或私有云连接和保护服务简而言之:集群下载地址环境版本:v...

.netcore3.1 Ocelot 与 Consul 熔断限流与缓存

目录与前言目录链接:.net core Ocelot 简单网关集群熔断架构整合目录基于上一篇文章展开 Ocelot 与 Consul 进行合并创建一...

.netcore 3.x 与 grpc

目录 本篇文章主要讲解如下内容 一。grpc在 .Net Core 3.x 中的应用 二。grpc如何分段上传图片 代码与实现过程比较简单,...

.netcore运用IServiceScope实现全局服务持续化注入

IServiceScope实现全局服务持续化注入[TOC] 创建 GloablePullWorkFlow.cs 类 public class GloablePullWorkFlow { ...

.netcore 通过Flurl验证k8s内部访问与获取环境变量

.netcore验证k8s内部访问与获取环境变量[TOC] 创建k8s-name项目 项目结构如下 实验过程 st=>start: k8s-demo项...

.netcore配置MarkDown的学习之路 (一)

前言MarkDown讲述 (开始使用)现在很多人都自己开发一个博客平台分享技术,老程序员都说干程序员如果没有开发出来一个...

.netcore 通过Flurl验证k8s内部访问与获取环境变量 (二)

.netcore验证k8s内部访问与获取环境变量 (二)[TOC] 修改k8s-name项目 NameController.cs [ApiController] ...

netcore项目时,Debug文件夹下多一个netcoreapp文件夹的解决办法

解决办法:编辑.csproj文件,在 &lt;TargetFramework&gt;netcoreapp2.1&lt;/TargetFramework&gt; 后加入“是否追加目标框...

netcore加Consul实现简单服务实例负载

今天,总结一下之前学习的Consul基础(后续如果有时间的话,再加上Ocelot部分):新建一个WebApi项目:模拟服务创建一个Web...

.netcore 3.1 运用 Json Patch 时的常见问题

.netcore 3.1 运用Json Patch[TOC] JSON Patch是一种使用API显式更新文档的方法。它本身是一种契约,用于描述如何修改文...

.netcore 解析JWT中间Base64报错

.netcore 解析JWT中间Base64报错[TOC] 解析时改为var jsonPayload = Base64UrlEncoder.Decode(basepayload); var claim...
这一世以无限游戏为使命!
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术