首页 > 编程语言 >看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存

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

时间:2023-12-25 15:56:19浏览次数:33  
标签:Webapi core Asp distCache Redis 缓存 var 节点 分布式

iamge

前言

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

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

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

分布式缓存的特点包括:

  1. 高可用性:分布式缓存采用多节点部署,数据被复制到多个节点上,即使某个节点发生故障,仍然可以从其他节点获取数据,保证系统的高可用性。

  2. 性能优化:分布式缓存将热门数据存储在内存中,加快数据的访问速度,减少对数据库的频繁访问,从而提高系统的性能。

  3. 数据一致性:分布式缓存通过复制、分片和一致性哈希等技术,确保多个节点上的数据保持一致。

  4. 伸缩性:分布式缓存可以根据负载情况动态扩展,以应对不断增长的数据量和访问量,新的节点可以很容易地加入到缓存集群中,以提供更大的存储容量和更高的性能。

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

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

使用步骤

  1. 下载和安装 Redis

  2. 打开 Program.cs 文件

  3. 在语句 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;
      }
    
  7. 通过分布式缓存的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 再保存

标签:Webapi,core,Asp,distCache,Redis,缓存,var,节点,分布式
From: https://www.cnblogs.com/JackyGz/p/17926261.html

相关文章

  • Django报错 (django.core.exceptions.ImproperlyConfigured)
    报错种类django.core.exceptions.ImproperlyConfigured:ErrorloadingMySQLdbmodule.Didyouinstallmysqlclient解决方案:1、按照mysql包pip3install-ihttp://pip.baidu.com/pypi/simple--trusted-hostpip.baidu.compymysql2、在项目同名的模块下的__init__.py文件......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-5】 - 配置管理-Mvc【Plugin-Admin 后
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-4】-配置管理-Mvc【Plugin-CORS跨域】本篇继续介绍下一个内容:系统配置节点:Mvc- Plugin- Admin 后台界面:配置界面如下: 配置说明如下:1、Admin.IsEnable:配置当前后台插件是否可用这是个很危险的开关:如果......
  • 从Redis读取.NET Core配置
    在本文中,我们将创建一个自定义的.NETCore应用配置源和提供程序,用于从Redis中读取配置。在此之前,您需要稍微了解一些.NETCore配置提供程序的工作原理,相关的内容可以在Microsoft开发者官网搜索到。另外您可能还需要了解一些Redis的基础知识,比如Redis的基础数据类型,持久化等等。一......
  • 【C#】.net core 6.0 通过依赖注入注册和使用上下文服务
    给自己一个目标,然后坚持一段时间,总会有收获和感悟!请求上下文是指在Web应用程序中处理请求时,包含有关当前请求的各种信息的对象。这些信息包括请求的头部、身体、查询字符串、路由数据、用户身份验证信息以及其他与请求相关的数据。目录一、DbContext1.1、创建自定义类1.2、注册......
  • .net core中如何自定义静态文件目录、默认主页、和文件浏览目录?
    在.NETCore中,UseStaticFiles、UseDefaultFiles、UseDirectoryBrowser和UseFileServer中间件用于处理静态文件和目录浏览。下面我将为你提供一个简单的例子,演示它们的用法。首先,确保你的项目已经安装了Microsoft.AspNetCore.StaticFiles NuGet包,因为这是这些中间件的依赖。dotn......
  • .Net Core 实现 自定义Http的Range输出实现断点续传或者分段下载
    一、Http的Range请求头,结合相应头Accept-Ranges、Content-Range可以实现如下功能:1.断点续传。用于下载文件被中断后,继续下载。2.大文件指定区块下载,如视频、音频拖动播放,直接定位到指定位置下载内容。可以避免每次都读取、传输整个文件,从而提升服务端性能。3.大文件分包批量下......
  • spring:Exception in thread "main" java.lang.NoClassDefFoundError: org/springframe
     设置了父类框架<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/><!--l......
  • ASP.NET Core 6(.NET 6) 修改默认端口的方法(5000和5001)
    ​ ASP.NETCore6(.NET6)默认将HTTP端口绑定到5000,将HTTPS端口绑定到5001。可以通过以下三种方式修改默认端口:详细文档:ASP.NETCore6(.NET6)修改默认端口的方法(5000和5001)-CJavaPy方法一:修改launchSettings.json文件在项目的根目录下,找到launchSettings.jso......
  • 策略模式(Strategy Pattern) .Net Core实现
    在策略模式(StrategyPattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。意图:定义一系列的算法,把它们一个个......
  • Spring的Bean后置处理器之AnnotationAwareAspectJAutoProxyCreator
    本文能帮你回答以下几个问题;AnnotationAwareAspectJAutoProxyCreator后置器的作用是什么?SpringAOP自动增强bean是如何实现的。如何在spring上下文添加AnnotationAwareAspectJAutoProxyCreator?如何利用ProxyFactory硬编码实现一个bean的增强?AnnotationAwareAspectJAutoProx......