数据缓存技术及代码详解

Java缓存技术详解:概念、原理与常用方案 缓存(Cache)是一种用于存储临时数据的硬件或软件组件,其核心目的是通过减少数据访问延迟来提高系统性能。在计算机科学领域,缓存充当了高速数据访问层,存储着频繁访问的数据子集,使得后续请求能够更快地得到响应,而不必每次都访问较慢的底层存储层。从本质上讲,缓存是一种典型的"空间换时间"策略,通过消耗额外的存储空间来换取数据处理速度的提升。这种技术在计算机体系结构的各个层面都有体现,从CPU内部的L1、L2、L3缓存,到操作系统层面的磁盘缓存,再到应用程序级别的数据缓存,形成了一个完整的多级缓存体系。 阅读详情

1.缓存概述
  •为什么使用缓存
    – 应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能
  • 缓存机制分类介绍
    – 应用程序缓存
    – 页输出缓存

2.应用程序缓存的机制
  • 应用程序缓存是由System.Web.Caching.Cache 类实现的,缓存实例(Cache 对象)是每个应用程序专
    用的,并且每个应用只有一个,通过Page类或UserControl类的Cache 属性公开
   • 缓存生存期依赖于应用程序的生存期,当重新启动应用程序后,将重新创建Cache 对象,也就是说缓存数据将被清空

3.如何将项添加到缓存中 
  • 添加缓存项
  • 设置缓存依赖项  
  • 设置缓存过期策略
  • 设置缓存优先级
4.设置缓存依赖项
  • 为什么要设置依赖项
  • 依赖项分类
    – 键依赖项
    – 文件依赖项
    –SQL 依赖项
    – 聚合依赖项
    – 自定义依赖项
  • 添加缓存项的文件依赖项
    Cache.Insert("FinanceData", "Cached Item 4",
      new System Web Caching CacheDependency(Server.MapPath( "XMLData.xml " ))); 
  • 添加缓存项的SQL 依赖项
    – 使用SqlCacheDependency 对象来创建依赖于数据库表中的记录
    – 在Web.config 文件的caching节点定义缓存使用的数据库名称及连接字符串
    – 使用代码依赖于该连接对应数据库的某个表的缓存项
      Cache.Insert("cacheitem1", "Cache Item 1",
        new SqlCacheDependency("AdvWorks", "Product"));
5.从缓存中删除项时通知应用程序
  • CacheItemRemovedCallback 委托
    – 该委托定义编写事件处理程序时使用的签名,当对从缓存中删除项进行响应时会调用此事件处理程序
  • CacheItemRemovedReason 枚举
    – 用于指定删除缓存项的原因

6.实例演示(使用CacheDependency监视文件变化)

  a)新建一个CacheUtil类,来处理Cache的常见操作,代码如下: 

View Code

 

   b)修改Global.asax.cs的Application_Start,在网站启动时,添加Cache

View Code

  c)修改Default.aspx.cs的Page_Load

View Code

 

   d)效果图:

  当修改Employees.xml,保存后,缓存会接到文件改变通知,重新加载数据

7.实例演示(使用SqlCacheDependency监视数据库表变化)

  a)新建一个页面SqlCacheTest.aspx,使用模板页

  b)启用数据库缓存依赖项

  此时会在数据库Student中的表Contact生成一个触发器和一堆存储过程:

  c)配置web.Config

    在  <system.web>节点下,加入:

View Code

 

    设置connectionStringName:

View Code

  d)修改CacheUtil.cs

View Code

  e)修改Global.asax.cs的Application_Start

View Code

  f)修改SqlCacheTest.aspx.cs的Page_Load

View Code

  g)效果图

  当我们在SSMS中修改数据库表的数据后,停小段时间,刷新页面

8)页输出缓存概述
  • 页输出缓存是指在缓存ASP.NET  页所生成的部分响应或所有响应
  • 提高Web应用程序的性能
  • 提高Web服务器的吞吐量
9)SqlCacheDependency
  • System.Web.Caching.SqlCacheDependency
  – 创建依赖于数据库中表或行的缓存项
    – <%@ OutputCache Duration="30"
      VaryByParam="none“ SqlDependency="Student:Contact" %>
10)部分页缓存
  • 控件缓存
    – 控件缓存(也称为片段缓存),可以通过创建 控件缓存(也称为片段缓存),用户控件来包含缓存的内容,然后将用户控件
      标记为可缓存来缓存部分页输出
  • 缓存后替换
    – 以声明方式使用Substitution 控件
    – 以编程方式使用Substitution 控件API
    – 以隐式方式使用AdRotator 控件
11)DataSource 缓存
  • 启用XxxDataSource 当中的缓存
  • 缓存单个数据源控件

12)SqlCacheDependency页面输出缓存实例

  a)新建文件夹:OutputCache

  b)在文件夹OutputCache中新建SqlCacheDependency.aspx 

View Code

  后台代码:

View Code

13)使用用户控件

  a)在文件夹OutputCache中新建LableControl.ascx

View Code

  后台代码:

View Code

  b)在文件夹OutputCache中新建PartialCachePage.aspx

View Code

  后台代码:

View Code

14)使用SqlDataSource

  在文件夹OutputCache中新建SqlDataSourceCache.aspx

 

  转载请注明出处:http://www.cnblogs.com/refactor

从零到一:桌面宠物的硬件架构设计与工程实践 本文详细介绍了基于STM32F103C8T6主控平台的桌面宠物机器人硬件架构设计与工程实践。内容涵盖电源管理、舵机控制、PCB布局及系统调试等核心环节,为硬件爱好者提供从零到一的完整开发指南,助力打造稳定可靠的智能桌面伴侣。 阅读详情

相关推荐

抖音视频数据抓取

最近经常有人问我抓取抖音视频的<em>数据</em>,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求...

2501_91048859的博客 3097

对缓存的理解

1.缓存是什么? 用于加速数据交换,达到用时即取的作用。缓存也是优化的一种方式。 2.理解: 一般我们在进行访问请求网站流程:用户通过客户端(浏览器)发送请求到服务器端,服务器端连接到数据库读取数据,最后服务器把数据信息返送到客户端。 加入缓存的理解是: (1)服务器从数据库读取数据时,可以把数据存入内存中,下次用到同样数据,不需要再次连接数据库,直接从内存中读取。 (2)数据

Gentry__的博客 3767

HFSS仿真的后处理结果,如何根据天线表面的电流密度分布对天线进行优化?

在HFSS仿真中,天线表面的Jsurf​是最直观、最有价值的诊断工具之一。它不仅告诉你天线“能不能工作”,还能告诉你“为什么工作”以及“哪里出了问题”。

degogmy的博客 1157

冻结数据的方法,防止被修改Object.freeze()

Object.freeze()方法接收一个参数,如果此参数是一个对象,则此方法把这个对象冻结,如果是其他类型则不会报错,无影响。 被冻结的对象不能修改、添加、删除其属性或者属性值 let obj = {"a":5}; Object.freeze(obj); //return 此obj obj.a = 3; //不会报错 console.log(obj); //仍然是 {"a":...

一个在全能之路上越走越远的男人。 1294

ESP32—C3实现网页跳转

用户点击HTML页面中的按钮。浏览器根据按钮的href属性向服务器发送HTTP GET请求。服务器根据请求的URL调用相应的回调函数。服务器发送包含新页面HTML内容的HTTP响应。浏览器解析并显示新的HTML页面。这个过程对于用户来说是无缝的,看起来就像是直接从一个页面跳转到另一个页面。实际上,背后发生了HTTP请求和响应的过程。

qq_59527512的博客 1022

杰理 JL701N/JL703N USB MIDI 使用教程

摘要:本教程介绍如何在杰理JL701N/JL703N音箱的可视化SDK中配置USB MIDI功能。主要步骤包括:1)启用PC模式;2)修改SDK宏定义启用USB MIDI;3)实现MIDI数据接收处理逻辑;4)调用接口发送MIDI数据;5)使用MIDI-OX测试功能。针对低版本SDK可能出现的设备识别问题,提供了在midi.c文件中添加特定代码行的解决方案。使用前需确保SDK版本达标,并注意备份原始文件。

qq_42014563的博客 1263

使用Ehcache缓存在用户输错n次账户密码之后冻结m小时的简单实现

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34015566的博客 568

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 210

对无线编码缓存的一些理解

当前,随着智能终端设备的普及,用户对于网络中资源的需求量急剧增长,这对网络的吞吐量提出了更高的要求。同时,由于用户数量和用户对资源需求随时间变化的特性,导致网络吞吐量具有时变性。如何有效利用网络带宽资源,减少流量高峰时期的拥堵成为一个急需解决的问题。 当前比较热门的一个方案是利用分布在网络中的存储资源将需求量高的内容在流量较少的时期进行备份,即将下载量高的内容备份在用户附近的存储设备或者终端的存储设备上。在流量高峰时期,用户发出资源请求后,首先从附近的存储设备中查找需求的资源,找不到时再由网络进行传输,这种

weixin_43509834的博客 840

【数据集】中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

WW、forever的博客 2595

32、社交媒体大数据中的情感分析与网络欺凌检测

本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。

cc789的博客 91

C#中缓存的基本用法总结

本文初步探讨了C#缓存的原理及应用,并以实例加以分析总结,这些对C#初学者来说是很有必要熟练掌握的内容。具体如下: 一、概述: 缓存应用目的:缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能。 1、缓存的引用空间:System.Web.Caching; 缓

killcwd的专栏 824

零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模

特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。

amy_mhd的博客 249

缓存技术的详解

说起缓存相关技术,老多了, memcache、redis、squid、varnish、web cache、 CDN等等。缓存技术五花八门,但这些技术间有什么共性的地方,又有什么不同的地方呢?答案肯定是有的,这次为大家分享及整理一下缓存方面的技术,主要分为三个系列展开: 缓存随谈系列之一:数据库缓存 缓存随谈系列之二:静态缓存 缓存随谈系列之三:动态缓存   一、什么是数据库缓存    ...

菲宇运维 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

深度解析数据缓存技术

​ 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。(1)先写缓存,再写数据库[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GuaslfbG-1675935082869)(null)]​ 假如缓存写成功,但写数据库失败或响应延迟,则下次读取(并发读)缓存时,就出现脏读。(2)先写数据库,再写缓存。

俗科技的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深入解析缓存技术

本文探讨了缓存技术的应用,包括其基本原理、更新机制、数据过期策略以及缓存可能引起的问题和解决方案。首先介绍了缓存缓存原理,然后深入探讨了三种主要的缓存更新机制:Cache Aside模式、Read/Write Through模式和Write Behind Caching,以及其优缺点和适用场景。接着,文章讨论了数据过期策略,包括LRU、FIFO和LFU算法,并通过Go语言代码实现。最后,文章分析了缓存可能带来的不一致性、大key、缓存雪崩、缓存穿透和缓存击穿等问题,并提出了相应的解决方案。

tatasix的博客 1488

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Redis缓存技术详解与实战

Redis作为一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在现代高并发、大数据量处理的系统中,Redis作为缓存层的应用越来越广泛。本文将详细讲解Redis在查询、添加缓存、更新缓存、缓存预热、缓存穿透、缓存雪崩、缓存击穿等场景下的应用及解决方案,并通过实例代码来加深理解。

zj的博客 1757

数据缓存技术

一,数据缓存1.数据缓存的定义:缓存是一种在计算机中广泛用来提高性能的技术。在Web应用程序的上下文中,缓存用于在Http请求间保留页或者数据,并在无需新创建的情况下多次使用他们。其目的是:节省应用程序处理时间和资源。2.缓存体系3.@OutputCache指令对于OutputCache指令Duration和VaryByParam两个属性是必须的4.HttpCachePolicy类二,页面部分缓存...

嗳夏晨网络智能化 2811

Java缓存技术详解

一、缓存是什么?请点击此处输入图片描述Cache①高速缓冲存储器,其中复制了频繁使用的数据以利于快速访问。②位于速度相差较大的两种硬件/软件之间,用于协调两者数据传输速度差异的结构二、缓存有哪几类?1、基于web应用的系统架构图请点击此处输入图片描述2、在系统架构中,不同层级之间为了加快访问速度,缓存都可以存在。操作系统磁盘缓存-&gt;减少磁盘机械操作数据库缓存-&gt;减少文件系统I/O应用程...

qq_36318234的博客 1026

ASP缓存技术详解

一、何谓ASP缓存/为什么要缓存   当你的web站点采用asp技术建立的初期,可能感觉到的是 asp动态网页技术带来的便利性,以及随意修改性、自如的http控制。但是,随着访问量的增加,你一定会发现自己的站点访问速度越来越慢,IIS重新启动得越来越频繁。接下来,你一定想优化asp,诸如更换性能更优异的数据库、建立索引、编写存储过程等等。这些措施有些不需要增加成本压力,有些则成本压力很大(譬如丛...

橙-极纪元-JJYCheng 716

详解分布式数据库缓存技术:高性能数据访问的基石

在现代高并发、低延迟的互联网应用中,数据库往往成为性能瓶颈。分布式数据库缓存技术通过将热点数据存储在高速的内存中,并利用分布式架构横向扩展,有效缓解了数据库压力,显著提升了应用的响应速度和吞吐量。它已成为构建大规模、高性能系统(如电商、社交、金融)不可或缺的核心组件。理解主流分布式缓存的技术特性、适用场景和权衡取舍,是系统架构师设计健壮、可扩展系统的关键能力。

谦与谦寻的神隐 1179

【后端】浅析缓存技术

缓存技术通过在高速存储介质中暂存数据副本,显著提升数据访问速度和系统响应性能。在人工智能领域,AI缓存技术特别突出。它利用先进的算法和模型预测用户需求,将数据预加载到内存中,以减少推断时间并提升AI模型的实时性能。另外,Alluxio作为一种开源的分布式存储系统,能够通过将数据在内存中进行存储和管理,为大数据处理提供高速访问能力,从而加速数据访问和分析过程。这些缓存技术不仅在数据管理和应用性能优化中发挥关键作用,也在提升系统效率和用户体验方面具有重要意义。

wnm23的专栏 1795
上一篇: Git的审核备忘
下一篇: OSI网络中的七层模型与TCP/IP的四层模型
deng_wei_csdn
博客等级 码龄10年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值