当前位置: 首页 > wzjs >正文

个人主页生成宁波seo优化定制

个人主页生成,宁波seo优化定制,wordpress主题 单页,网站建设研究意义文章目录 前言一、分布式缓存的核心概念作用:与内存缓存的区别: 二、ASP.NET Core 中的 IDistributedCache三、常用分布式缓存实现1)Redis(最常用)2)SQL Server3)NCache(企业级方案&…

文章目录

  • 前言
  • 一、分布式缓存的核心概念
    • 作用:
    • 与内存缓存的区别:
  • 二、ASP.NET Core 中的 IDistributedCache
  • 三、常用分布式缓存实现
    • 1)Redis(最常用)
    • 2)SQL Server
    • 3)NCache(企业级方案)
  • 四、基本操作示例
  • 五、最佳实践
  • 六、常见问题与解决方案
  • 总结


前言

在 ASP.NET Core 中,分布式缓存是一种将缓存数据存储在多个应用服务器共享的外部服务中的机制。它适用于分布式系统、集群部署或需要跨多个实例共享缓存数据的场景。

一、分布式缓存的核心概念

作用:

  1. 提升性能(减少数据库压力)
  2. 支持跨多个应用实例共享缓存数据
  3. 确保缓存一致性(尤其在负载均衡环境中)
  4. 支持高可用性和容错

与内存缓存的区别:

  1. 内存缓存 (IMemoryCache) 数据存储在应用进程内存中,无法跨实例共享。
  2. 分布式缓存 (IDistributedCache) 数据存储在外部服务(如 RedisSQL ServerMemcached),可跨实例共享。缓存值的类型为byte[],需要自己进行类型转换,也提供了一些按照string类型存取缓存值的扩展方法。

二、ASP.NET Core 中的 IDistributedCache

  1. ASP.NET Core 提供 IDistributedCache 接口,抽象了分布式缓存的操作:
    public interface IDistributedCache
    {byte[]? Get(string key);Task<byte[]?> GetAsync(string key, CancellationToken token = default);void Set(string key, byte[] value, DistributedCacheEntryOptions options);Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, CancellationToken token = default);void Refresh(string key);Task RefreshAsync(string key, CancellationToken token = default);void Remove(string key);Task RemoveAsync(string key, CancellationToken token = default);
    }
    

三、常用分布式缓存实现

  • 缓存服务器说明
    • 1、SQL Server做缓存服务性能并不好。
    • 2、Memcached是缓存专用,性能非常高,但是对于集群、高可用等方面比较弱,而且有“缓存键的最大长度为250字节”等限制。使用需要安装EnyimMemcachedCore第三方Nuget包。
    • 3、Redis不局限于缓存,Redis做缓存服务器比Memcached性能稍差,但是Redis的高可用、集群等方面非常强大,适合在数据量大、高可用性等场景下使用。

1)Redis(最常用)

  • 优势:高性能、低延迟、支持数据持久化。

  • 配置步骤

    1. 安装 NuGet 包:
      Install-Package Microsoft.Extensions.Caching.StackExchangeRedis
      
    2. 在 Program.cs 中注册服务:
      builder.Services.AddStackExchangeRedisCache(options =>
      {options.Configuration = "localhost:6379"; // Redis 服务地址options.InstanceName = "MyApp_";          // 可选,用于键前缀,避免混乱
      });
      

2)SQL Server

  • 适用场景:需要利用现有 SQL Server 数据库作为缓存存储。
  • 配置步骤
    1. 安装 NuGet 包:

      Install-Package Microsoft.Extensions.Caching.SqlServer
      
    2. 创建缓存表(使用 sql-cache 工具):

      dotnet sql-cache create @"Data Source=.;Initial Catalog=CacheDb;
      Integrated Security=True;" dbo CacheTable
      
    3. 注册服务

      builder.Services.AddDistributedSqlServerCache(options =>
      {options.ConnectionString = "Data Source=.;Initial Catalog=CacheDb;Integrated Security=True;";options.SchemaName = "dbo";options.TableName = "CacheTable";
      });
      

3)NCache(企业级方案)

  • 优势:高性能、支持内存镜像、数据分区。
  • 配置步骤
    1. 安装 NuGet 包:
      Install-Package Alachisoft.NCache.OpenSource.SDK
      
    2. 注册服务
      builder.Services.AddNCacheDistributedCache(configuration =>
      {configuration.CacheName = "myCache";configuration.EnableLogs = true;
      });
      

四、基本操作示例

  1. 示例
    public class CacheService
    {private readonly IDistributedCache _cache;public CacheService(IDistributedCache cache){_cache = cache;}public async Task<string> GetDataAsync(string key){var data = await _cache.GetAsync(key);return data == null ? null : Encoding.UTF8.GetString(data);}public async Task SetDataAsync(string key, string value, TimeSpan? expiry = null){var options = new DistributedCacheEntryOptions{AbsoluteExpirationRelativeToNow = expiry ?? TimeSpan.FromMinutes(10)};await _cache.SetAsync(key, Encoding.UTF8.GetBytes(value), options);}public async Task RemoveDataAsync(string key){await _cache.RemoveAsync(key);}
    }
    

五、最佳实践

    1. 缓存内容选择
    • 缓存频繁读取但较少变更的数据(如配置、热点数据)。
    • 避免缓存大型对象或敏感数据。
    1. 过期策略
    • 滑动过期Sliding Expiration):适合活跃数据。
    • 绝对过期Absolute Expiration):确保数据定期刷新。
      options.SlidingExpiration = TimeSpan.FromMinutes(5);
      options.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1);
      
    1. 序列化
    • 使用高效的序列化方式(如 JSONMessagePackProtobuf)。
    • 示例(使用 System.Text.Json):
      var data = JsonSerializer.SerializeToUtf8Bytes(myObject);
      await _cache.SetAsync(key, data, options);
      
    1. 缓存雪崩预防
    • 为不同的键设置随机的过期时间偏移量。
    • 使用锁机制防止并发更新(如 SemaphoreSlim)。
    1. 高可用性
    • Redis 等缓存服务配置主从复制和哨兵模式。
    • 启用持久化以防止数据丢失。
    1. 监控与诊断
    • 使用 Application InsightsPrometheus 监控缓存命中率。
    • 记录缓存操作耗时和异常。

六、常见问题与解决方案

    1. 缓存穿透(查询不存在的数据):
    • 方案:使用布隆过滤器(Bloom Filter)或缓存空值。
    1. 缓存雪崩(大量键同时过期):
    • 方案:设置随机过期时间,使用后台任务预加载数据。
    1. 数据一致性
    • 方案:通过发布/订阅模式(如 Redis Pub/Sub)通知其他实例更新缓存。
    1. 性能问题
    • 方案:优化序列化/反序列化,使用二进制格式(如 MessagePack)。

总结

分布式缓存在 ASP.NET Core 中是实现高性能、可扩展应用的关键组件。选择合适的缓存提供程序(如 Redis),结合合理的过期策略和序列化方式,可以显著提升系统性能。在设计和实现时,需特别注意缓存一致性、雪崩和穿透等问题,通过监控和诊断工具持续优化缓存策略。

http://www.dtcms.com/wzjs/153783.html

相关文章:

  • 上海摄影网站建设好看的友情链接代码
  • 镜像网站做优化短网址生成网站
  • 佛山销售型网站建设网站关键词怎么优化到首页
  • 无锡网站定制公司女教师遭网课入侵直播录屏曝光se
  • 大连企业网站建设定制杭州网站优化咨询
  • 企业网站备案网地址网页设计与制作考试试题及答案
  • 网站流量共享深圳百度竞价推广
  • 顺义公司网站建设网络seo啥意思
  • 网站建设培训心得磁力链搜索引擎入口
  • 手机上做网站网络优化工程师是做什么的
  • 珠海网站设计网络优化网络营销的四大基础理论
  • 怎么更改网站备案信息阿里巴巴官网首页
  • html5手机网站模板下载游戏推广员一个月能赚多少
  • 建设报名系统官网是真的吗南宁网站seo优化公司
  • 中国用美国的gps收费吗推广优化关键词
  • 网站源码绑定域名处理旅游app推广营销策略
  • 网站建设与网页设计 视频网盘搜索引擎入口
  • 哪些购物网站有做拼团活动北京百度网讯科技有限公司
  • 网站建设企业网站小程序制作
  • 云梦网站怎么做浮窗网络市场调研的方法
  • 石家庄做外贸的网站建设制作网页的流程步骤
  • 企业适合用模板网站网络销售推广平台
  • 建设政府网站的公司重庆网络推广平台
  • 哪些网站做的好看的图片做百度推广需要什么条件
  • 网站的登录界面是怎么做的企业网站设计代码
  • 自助搭建网站seo网站整站优化
  • 想建书画网站怎么做的seo推广方案怎么做
  • 县门户网站建设方案域名注册查询入口
  • 从本地服务入手做本地网站百度快照在哪里
  • 北京seo网站设计百度网站大全