看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存

简介: 看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存

前言

缓存是提升程序性能必不可少的方法,Asp.net core 支持多级缓存配置,主要有客户端缓存、服务器端缓存,内存缓存和分布式缓存等。其中客户端缓和服务器端缓存在使用上都有比较大的限制,而内存缓和分布式缓存则比较灵活。

分布式缓存是一种用于存储和管理数据的技术,它将数据存储在多个节点上,以实现高可用性、伸缩性和性能优化。

分布式缓存通常用于大规模的应用程序中,可以有效地减轻数据库负载,加速数据访问,提高系统的可靠性和性能。

分布式缓存的特点包括:

  1. 高可用性:分布式缓存采用多节点部署,数据被复制到多个节点上,即使某个节点发生故障,仍然可以从其他节点获取数据,保证系统的高可用性。
  2. 性能优化:分布式缓存将热门数据存储在内存中,加快数据的访问速度,减少对数据库的频繁访问,从而提高系统的性能。
  3. 数据一致性:分布式缓存通过复制、分片和一致性哈希等技术,确保多个节点上的数据保持一致。
  4. 伸缩性:分布式缓存可以根据负载情况动态扩展,以应对不断增长的数据量和访问量,新的节点可以很容易地加入到缓存集群中,以提供更大的存储容量和更高的性能。

常见的分布式缓存系统包括 Redis、Memcached、Ehcache 等,可以方便地在应用程序中集成和使用。

本篇主要讲解在 asp.net core net6.0 webapi 项目中如何利用 Redis 来实现分布式缓存。

使用步骤

  1. 下载和安装 Redis
  1. 打开 Program.cs 文件
  2. 在语句 var app = builder.Build(); 之前注册内存缓存服务
var builder = WebApplication.CreateBuilder(args);
......
//注册分布式缓存服务
builder.Services.AddStackExchangeRedisCache(options => {
    // 配置 Redis 连接串
    options.Configuration = "127.0.0.1:16379,allowadmin=true";
    // 配置缓存Key前缀,避免和其它程序冲突,因为Redis可能其它程序也在使用
    options.InstanceName = "test_";
});
......
var app = builder.Build();

4.打开控制器文件,如 Test1Controller.cs

5.引入分布式缓存命名空间

using Microsoft.Extensions.Caching.Distributed;

6.在构造方法注入内存缓存服务,如:

private readonly IDistributedCache distCache;
  public Test1Controller(IDistributedCache distCache)
  {
      this.distCache = distCache;
  }
  1. 通过分布式缓存的GetString和SetString方法缓存数据,如:
[HttpGet]
public string Now()
{
    var cacheKey = "Now";
    string? s = distCache.GetString(cacheKey);
    if (s == null)
    {
        s = DateTime.Now.ToString();
        var opt = new DistributedCacheEntryOptions();
        opt.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(10);    //设置绝对过期时间
        distCache.SetString(cacheKey, s, opt);
    }
    return s;
}

小技巧

  • 代码中,分布式缓存只支持 String 和 byte[],如果非 String 可以用 Json 把它反序列化为 String 再保存


相关文章
|
11月前
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
477 18
|
11月前
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
324 16
|
12月前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
229 14
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
541 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
NoSQL Java Redis
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
379 7
面试官:项目中如何实现分布式锁?
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
224 3
|
开发框架 NoSQL .NET
利用分布式锁在ASP.NET Core中实现防抖
【9月更文挑战第5天】在 ASP.NET Core 中,可通过分布式锁实现防抖功能,仅处理连续相同请求中的首个请求,其余请求返回 204 No Content,直至锁释放。具体步骤包括:安装分布式锁库如 `StackExchange.Redis`;创建分布式锁服务接口及其实现;构建防抖中间件;并在 `Startup.cs` 中注册相关服务和中间件。这一机制有效避免了短时间内重复操作的问题。
337 4
|
缓存 NoSQL Java
瑞吉外卖项目笔记+踩坑2——缓存、读写分离优化
缓存菜品、套餐数据、mysql主从复制实现读写分离、前后端分离
瑞吉外卖项目笔记+踩坑2——缓存、读写分离优化
|
缓存 开发框架 移动开发
uni-app:下载使用uni&创建项目&和小程序链接&数据缓存&小程序打包 (一)
uni-app 是一个跨平台的开发框架,它允许开发者使用 Vue.js 来构建应用程序,并能够同时发布到多个平台,如微信小程序、支付宝小程序、H5、App(通过DCloud的打包服务)等。uni-app 的目标是通过统一的代码库,简化多平台开发过程,提高开发效率。 在这一部分中,我们将逐步介绍如何下载和使用uni-app、创建一个新的项目、如何将项目链接到小程序,以及实现数据缓存的基本方法。
447 0
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
167 0