ASP.NET Core 使用 Redis 实现分布式缓存:Docker、IDistributed
ASP.NET Core 使用 Redis 实现分布式缓存:Docker、IDistributedCache、StackExchangeRedis前提:一台 Linux 服务器、已安装 Docker。 一,Docker 中运行 Redis拉取 Redis 镜像 docker pull redis 查询镜像列表 docker imgaes 运行 Redis的几种方法 ①运行并且设置 Redis 端口 docker run -p 6379:6379 -d redis:latest redis-server ② docker run -p 6379:6379 -d {镜像id} redis-server ③持久化 将 Docker 里的 Redis 数据持久化到物理机 docker run -p 6379:6379 -v {物理机路径}:/data -d redis:latest redis-server --appendonly yes 下载 Windows 版的 Redis 管理器 Windows 版本的 Redis Desktop Manager 64位 2019.1(中文版) 下载地址 https://www.7down.com/soft/233274.html 官方正版最新版本下载地址 https://redisdesktop.com/download 另附 Redis 学习教程: Redis 中文网 https://www.redis.net.cn/ .NET 使用 Redis 学习 地址(貌似这个教程版本过时了) https://www.cnblogs.com/cang12138/p/8884362.html 搭建 Master/Slaver 模式的 Redis 集群 https://blog.csdn.net/lupengfei1009/article/details/88323561#_154 使用 Redis Desktop Manager 连接 Redis 二,ASP.NET Core 使用分布式缓存ASP.NET Core 中,支持使用多种数据库进行缓存,ASP.NET Core 提供了统一的接口给开发者使用。 IDistributedCache ASP.NET Core 中,使用 IDistributedCache 为开发者提供统一的缓存使用接口,而不必关注使用的是何种数据库。 IDistributedCache]接口提供了以下方法操作的分布式的缓存实现中的项:
IDistributedCache 提供的常用方法如下:
官方文档很详细https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.2 ASP.NET Core 中配置缓存新建一个 ASP.NET Core WebApi 项目 Nuget 管理器安装 Microsoft.Extensions.Caching.StackExchangeRedis ConfigureServices 中使用服务 services.AddDistributedMemoryCache(); 配置 Redis 服务器 services.AddStackExchangeRedisCache(options => { options.Configuration = "localhost:6379"; options.InstanceName = "mvc"; }); InstanceName 是你自定义的实例名称,创建缓存时会以此名称开头。 这样就配置好了。 使用缓存修改默认生成的 ValuesController.cs。 注入缓存服务 private readonly IDistributedCache _cache; public ValuesController(IDistributedCache cache) { _cache = cache; } 设置缓存和使用缓存: await _cache.GetAsync("{键名}"); _cache.SetAsync("键名",{值},{设置}); 删除原来的方法,添加以下代码: [HttpGet("Set")] public async Task<JsonResult> SetCache(string setkey,string setvalue) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; string value = DateTime.Now.ToLongTimeString(); if (!string.IsNullOrEmpty(setvalue)) value = setvalue; await _cache.SetStringAsync(key,value); return new JsonResult(new { Code = 200,Message = "设置缓存成功",Data = "key=" + key + " value=" + value }); } [HttpGet("Get")] public async Task<JsonResult> GetCache(string setkey) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; var value = await _cache.GetStringAsync(key); return new JsonResult(new { Code = 200,Data = "key=" + key + " value=" + value }); } 在 URL 添加 QueryString 可以设置缓存内容,如果没有带参数的话,就使用默认的值。 打开 https://localhost:5001/api/values/set 可以看到设置了默认值。 或者访问 https://localhost:5001/api/values/set?setkey=key22222&setvalue=asafesfdsreg 自定义设置缓存值。 打开 https://localhost:5001/api/values/get?setkey=key22222 可以获取缓存值。 设置缓存过期时间使用 DistributedCacheEntryOptions 可以设置缓存过期时间 DistributedCacheEntryOptions 有三个属性,表示相对时间、绝对时间。 使用方法 [HttpGet("Set")] public async Task<JsonResult> SetCache(string setkey,string setvalue) { string key = "key1"; if (!string.IsNullOrEmpty(setkey)) key = setkey; string value = DateTime.Now.ToLongTimeString(); if (!string.IsNullOrEmpty(setvalue)) value = setvalue; var options = new DistributedCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromSeconds(20)); await _cache.SetStringAsync(key,value,options); return new JsonResult(new { Code = 200,Data = "key=" + key + " value=" + value }); } 缓存 20 秒,20秒过后此缓存将被清除。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 应用程序每15分钟编译一次
- asp.net – 如何从单独的.NET应用程序获取当前上
- asp.net-core – VS 2015中的Asp.net核心EF
- asp.net-mvc – 使用Nuget打包源代码
- asp.net – TableHeaderRow类的重点是什么
- asp.net – CheckBoxList多个选择:难度模型绑定
- asp.net – 如何将HTML页面转换为.ASPX页面并向其
- ASP.NET Ajax客户端框架无法加载.将ScriptManage
- asp.net-web-api – 在身份验证过滤器中的Challe
- asp.net – 如何关闭IIS中的预编译?