asp.net数据库缓存依赖

ASP.NET数据库缓存依赖实例分析 本文实例讲述了ASP.NET数据库缓存依赖,分享给大家供大家参考。具体如下: 一般在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cache.Insert 并提供引用文件的 CacheDependency 对象添加的 代码如下:Cache.Insert(“MyData”, Source, new CacheDependency(Server.MapPath(“authors.xml”))); 但是当我们想让缓存根据数据库中表的变化而失效并重建该缓存的时候,应该怎么做呢 – 这种情景在很多应用程序中都存在。 立即下载

1.为数据库启用缓存依赖(您需要具有管理特权,或管理帐户和密码。)

在"Visual Studio 命令提示(2010(这里我用的是2010版本的,可以使用VS2005)"运行aspnet_regsql

(MSSQL 2000启用方式略有不同)

aspnet_regsql.exe -S Excel-lang -U sa -P sa -ed -d TestDB -et -t UserInfo

或者

aspnet_regsql -C "data source=Excel-lang;initial catalog=TestDB;user id=sa;password=sa" -ed -et -t "UserInfos"

注:1.数据库服务器名称为 Excel-lang 2.用户和密码为 sa sa 3.数据库和表分别为 TestDB UserInfo
运行完成后会在数据库下面产生一张表AspNet_SqlCacheTablesForChangeNotification和一个触发器

2.检查数据库是否启用监听服务

Select DataBasePropertyex('TestDB','IsBrokerEnabled')

或者

SELECT is_broker_enabled FROM sys.databases WHERE name = 'TestDB'

(1为已启用,0为未启用)

如果没有启用

使用语句ALTER DATABASE TestDB SET ENABLE_BROKER;启用监听服务

如果启用失败或者很长时间一直在执行请执行一下语句

ALTER DATABASE TestDB SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE TestDB SET ENABLE_BROKER;

3.配置WebConfig

<configuration>
 <connectionStrings>节点下配置

<add name="TestDBConnectionString" connectionString="Data Source=EXCEL-LANG;Initial Catalog=TestDB;Persist Security Info=True;User ID=sa;Password=sa" providerName="System.Data.SqlClient" />
  </connectionStrings>

 <system.web>   节点下配置

 <caching>
      <sqlCacheDependency enabled="true" pollTime="1000">
        <databases>
          <add name="TestDB" connectionStringName="TestDBConnectionString"/>
        </databases>
      </sqlCacheDependency>
    </caching>

各节点属性请参照MSDN相关文档

4.页面加载时执行以下代码,从数据库中获取数据并加入缓存中

?
1
2
3
4
5
6
7
8
List<UserInfo> list = DataCache.GetCache( "UserInfoCache" ) as List<UserInfo>;
if (list == null )
{
     System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency( "TestDB" , "UserInfo" );
     list = userManger.GetUserLoginList();
     onMoveBack = new CacheItemRemovedCallback(RemovedCallback);
     DataCache.SetCache( "UserInfoCache" , list, dep, onMoveBack);
}

5.申明缓存失效后所执行的函数

?
1
2
3
4
5
6
7
8
CacheItemRemovedCallback onMoveBack;
  private void RemovedCallback(String k, Object v, CacheItemRemovedReason r)
  {
      onMoveBack = new CacheItemRemovedCallback(RemovedCallback);
      System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency( "TestDB" , "UserInfo" );
      List<UserInfo> list = userManger.GetUserLoginList(); //从数据库中获取数据
    DataCache.SetCache( "UserInfoCache" , list, dep,onMoveBack);
  }

6.DataCache类 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.Caching;
 
public class DataCache
{
     /// <summary>
     /// 获取当前应用程序指定CacheKey的Cache值
     /// </summary>
     /// <param name="CacheKey"></param>
     /// <returns></returns>
     public static object GetCache( string CacheKey)
     {
         System.Web.Caching.Cache objCache = HttpRuntime.Cache;
         return objCache[CacheKey];
     }
     /// <summary>
     /// 设置当前应用程序指定CacheKey的Cache值
     /// </summary>
     /// <param name="CacheKey"></param>
     /// <param name="objObject"></param>
     public static void SetCache( string CacheKey, object objObject)
     {
         System.Web.Caching.Cache objCache = HttpRuntime.Cache;
         objCache.Insert(CacheKey, objObject);
     }
     /// <summary>
     /// 设置已缓存依赖的方式缓存数据
     /// </summary>
     /// <param name="CacheKey">键值</param>
     /// <param name="objObject">缓存对象</param>
     /// <param name="dep">缓存依赖项</param>
     /// <param name="onMoveCallBack">缓存项移除是触发的回调函数</param>
     public static void SetCache( string CacheKey, object objObject, System.Web.Caching.CacheDependency dep, CacheItemRemovedCallback onMoveCallBack)
     {
         System.Web.Caching.Cache objCache = HttpRuntime.Cache;
         objCache.Insert(
         CacheKey,
         objObject,
         dep,
         System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
         System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过期
         System.Web.Caching.CacheItemPriority.Default,
         onMoveCallBack
         );
     }
}

7.执行步骤为从数据库查询数据→加入缓存(同时设置过期策略以及过期回调函数)→过期时→执行过期回调函数

 RemovedCallback→重新查询数据并加入缓存.

深度解读扫地机器人的导航原理 科技改变生活,不可否认科技的进步的确为我们的生活带来许多便捷,以智能家电为例,智能电饭煲、智能洗碗机、智能扫地机等产品已逐渐成为家庭的一分子,其中以扫地机表现最为抢眼。能做到智能规划清扫,收割了不少家庭主妇及科技爱好者的芳心。但扫地机并非一开始就这么智能,最初的扫地机只能做到随机式清扫,会频繁出现碰撞现象。 近年来,通过业界的不断努力,目前,扫地机器人已告别乱碰乱撞现象,能做到自主路径... 阅读详情

相关推荐

ur3手眼标定+realsenseL515

知乎 csdn

AI_future的博客 978

Asp.net数据库缓存依赖

前言       本文主要是对《ASP.NET 2.0开发指南》——&lt;数据缓存&gt;章节内容的提取并略有补充。   参考资料       1.      《ASP.NET 2.0开发指南》       2.     .NET 2.0 SqlDependency快速上手指南   支持数据库       SQL SERVER 7.0/2000/2005版本   正文   ...

weixin_33724659的博客 207

从零实战:基于华中8型数控系统的CNC数据采集与二次开发

本文详细介绍了基于华中8型数控系统的CNC数据采集与二次开发实战指南。从开发环境准备到核心数据采集实现,涵盖Windows平台配置、实时数据采集、报警处理等关键技术,帮助开发者快速掌握华中数控系统的数据采集能力,提升智能制造水平。

weixin_42561143的博客 815

ASP.NET 数据库缓存依赖

By Peter A. Bromberg, Ph.D.    在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cache.Insert 并提供引用文件的 CacheDependency 对象添加的 Cache.Insert("MyData", Source, new CacheDependency(

conanlwl的个人BLOG 1113

13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE

13个GNS3 appliances设备模板:IOSv/L2,IOU L2/L3,以及IOS-XE合集

haierccc的博客 1077

学习海康VisionMaster之BLOB分析

6):软阈值(相对):是一种动态阈值分割方法,其核心思想是 基于图像局部特性(如背景或参考区域)自适应调整阈值范围,适用于光照变化明显、背景灰度不均的场景。3:拖入位置修正功能:这个非常重要,模版匹配成功后会得到新的匹配坐标,那和创建模版时候的原点坐标会组合成一个坐标变换矩阵,通过这个矩阵,那后续的blob分析窗口则可以实现精确定位来查找目标对象。(2):设定参数:这里阈值方式是blob的核心算法,根据不同的应用场景来选择不同的阈值方式。8:高级参数:是设定blob区域的特征范围,用于筛选出来特定的区域。

yuhouxiyang的专栏 3621

System.Web.Caching.Cache类 缓存 各种缓存依赖

System.Web.Caching.Cache类 缓存 各种缓存依赖   Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。 一、属性 属性 说明 ...

ajwqb06628的专栏 648

win11 使用 QEMU 配置龙芯 3A5000 虚拟环境

win11 使用 QEMU 配置龙芯 3A5000 虚拟环境

一朵花开的时间 6157

ASP.NET MVC 数据库依赖缓存

ASP.NET MVC 数据库依赖缓存   问题背景   最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据。   以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法:   我请求的这段数据它是一段相对比较固定的数据,也就是说它不怎么改变,也许几个月才会改变一次。   由于这种数据的变化周期很长,所以以前做这种功能的时候,会使用缓存进行优化,可以直接从缓存中读取数据,避免每一次接收了ajax请求后都...

huiguoyuan的博客 381

8位2路选择器设计

8位2路选择器设计

好好学习,天天向上 4289

华为OD机试 - 开源项目热度榜单(Java 2025 C卷 100分)

H = Wwatch X#watch + Wstar X#star +Wfork X#fork +Wissue X#issue +Wmr X#mr H表示热度值,Wwatch、Wstar、Wfork、Wissue、Wmr分别表示5个统计维度的权重,#watch、#star、#fork、#issue、#mr分别表示5个统计维度的统计值。

学Java,找哪吒 1756

asp.net 实现文件缓存依赖,数据库缓存依赖

     Demo简单的是实现Asp.net2.0中缓存机制的实现:    注:对数据库的缓存依赖,.net目前并不支持oracle数据库(方法可以参考转帖文章)》public partial class _Default : System.Web.UI.Page {    string connstr;    protected void Page_Load(ob

JustLovePro的专栏 2849

OpenCV计算机视觉实战(12)——图像金字塔与特征缩放

图像金字塔技术通过对原始图像按不同分辨率进行多层次表示,不仅能提升计算效率,还能为图像融合、检测与识别提供多尺度特征。高斯金字塔 (Gaussian Pyramid) 用于构建多级低通图像,拉普拉斯金字塔 (Laplacian Pyramid) 则提取各层之间的细节信息。本节将深入介绍如何使用 OpenCV 构建高斯与拉普拉斯金字塔,并以经典的图像融合案例,展示图像金字塔在特征缩放与融合中的强大应用。

qq_30167691的博客 1404

java 缓存依赖_ASP.NET 数据库缓存依赖

By Peter A. Bromberg, Ph.D.在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,文件依赖项是通过使用Cache.Insert并提供引用文件的CacheDependency对象添加的Cache.Insert(“MyData”, Source, new CacheDependency(Server.MapPath(...

weixin_36246453的博客 159

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

初遇 Asp.net MVC 数据库依赖缓存那些事儿

声明:本文为作者原创文章,转载请注明出处https://www.cnblogs.com/MaMaNongNong/p/8904022.html 问题背景:   最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据。   以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法:   我请求的这段数据它是一段相对比较固定的数据,也就是说它不...

aidiumei3182的博客 146

老版QQ原生表情gif动态

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

ASP.NET 数据库缓存依赖 [整理转帖]

ASP.NET 数据库缓存依赖By Peter A. Bromberg, Ph.D.    在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cache.Insert 并提供引用文件的 CacheDependency 对象添加的 Cache.Insert("MyData", Source, n

十月的专栏 722

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: C#代码修改图片分辨率大小
下一篇: 四川大学线下编程比赛第一题:数字填充
wingahi
博客等级 码龄15年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值