博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 数据库缓存依赖:【实例与解释】
阅读量:4984 次
发布时间:2019-06-12

本文共 2438 字,大约阅读时间需要 8 分钟。

数据库缓存依赖应用了Cache类,看了这么多篇文章,当时都被忽悠住了,一直以为数据库修改过后,缓存数据也随之改变,希望新手不要这么人为,所谓数据库缓存依赖其实就是让应用程序中的缓存与数据库某表数据建立依赖关系,当数据库数据变化时通知给应用程序,并让应用程序中对应依赖的Cache数据失效(=null)。就是这么一个简单的过程,用户可以通过判断cache是否存在,如果不存在则重新加载数据项。简单的说就是一个数据变化通知的过程,并不会直接改变缓存数据。下面【第三步的】代码可能有错误,大致是这样的,具体没有调试,很简单,用户自我理解一下就可以了。

提炼的精简方法如下:

一. 修改 web.config 的<system.web>节:

1.数据库连接字符串

<connectionStrings>

<add name="OAMisc_ConnectionString" connectionString="Database=SystemOA;server=66.116.111.112;User ID=sa;Password=sa;" providerName="System.Data.SqlClient"/>

</connectionStrings>

2.在<system.web>中添加如下配置信息,*注意:“name” 对应数据库名称;“connectionStringName” 对应连接字符串名称。

<system.web>

<caching>

<sqlCacheDependency enabled="true" pollTime="6000">
<databases>
<add name="SystemOA_221_110911" connectionStringName="OAMisc_ConnectionString"/>
</databases>
</sqlCacheDependency>
</caching>

<system.web>

 

二. 执行命令

开始→运行→CMD→找到自己C\windows\.......的framework对应版本的目录(里面有个aspnet_regsql.exe文件),输入命令:

aspnet_regsql -C "data source=66.116.111.112;initial catalog=SystemOA;user id=sa;password=sa" -ed -et -t "UserInfos"

注释:“data source”:数据源IP地址,“initial catalog”:数据库名称 , “-t”:需要缓存依赖的表名

 

三. 程序中使用依赖缓存

示例:新建了一个页面,后台代码如下。

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Caching;

public partial class _Default : System.Web.UI.Page

{
/// <summary>
/// 获取当前应用程序指定Key的缓存对象值
/// </summary>
/// <param name="cacheKey">缓存的键</param>
/// <returns>返回缓存对象的值</returns>
public static object GetCache( string cacheKey )
{
Cache myCache = HttpRuntime.Cache;
return myCache[ cacheKey ];
}

//添加缓存数据

public static void AddCache( string cacheKey , object cacheValue , CacheDependency dep )

{
Cache myCache = HttpRuntime.Cache;
myCache.Insert( cacheKey , cacheValue , dep , Cache.NoAbsoluteExpiration , Cache.NoSlidingExpiration , CacheItemPriority.Default , null );
}

// 页面处理

protected void Page_Load(object sender, EventArgs e)

{
string cacheKey = "ke1";

DateTime nowDate = DateTime.Now;

object objModel = GetCache( cacheKey ); //先获取缓存中的数据
if ( objModel==null ) //缓存失效,则重新加载缓存数据
{
nowDate = DateTime.Now; //以当前时间作为一个缓存失效的标记。

System.Web.Caching.SqlCacheDependency sqlDep = new System.Web.Caching.SqlCacheDependency( "SystemOA" , "frame_config" );

AddCache( "测试key" , "测试值" , sqlDep );

}

Label1.Text = nowDate.ToString( ); 
}
}

 

 

 

posted on
2012-03-15 16:15 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/yanpo/archive/2012/03/15/2398267.html

你可能感兴趣的文章
一个监听事件监听多个按钮
查看>>
调用其他类的方法
查看>>
SQlite数据库
查看>>
前端开发要注意的浏览器兼容性问题整理
查看>>
Python服务器开发 -- 网络基础
查看>>
开源项目Html Agility Pack实现快速解析Html
查看>>
一些常用的js,jquerry 样例
查看>>
Oracle PL/SQL 多重选择句
查看>>
dorado中的creationType选择类型
查看>>
C++11 数值类型和字符串的相互转换
查看>>
无锡盈达聚力科技有限公司
查看>>
tyvj1659中中救援队
查看>>
kubernetes学习:CKA考试题
查看>>
LINUX samba的安装使用
查看>>
CSS border 生成三角
查看>>
asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)
查看>>
7.STM32中GPIO理解
查看>>
base64 json
查看>>
在vim中搜索单词
查看>>
设置定点数学属性
查看>>